javascript - 过滤两个日期之间的日期数组
问题描述
我有一系列日期。我正在尝试删除不在两个日期之间的日期。但是我得到了一些甚至早于“开始”日期的日期。我究竟做错了什么?
$scope.filterUpcomingEvents = function() {
$scope.arrayOfEventData = JSON.parse(JSON.stringify($scope.tempArray));
console.log($scope.tempArray, "arrayofeve");
for (let d = 0; d < $scope.arrayOfEventData.length; d++) {
debugger;
console.log(d);
console.log(new Date($scope.tempArray[d].event_date), "from", $scope.upcomingEventFrom);
console.log(new Date($scope.tempArray[d].event_date) < $scope.upcomingEventFrom);
console.log(new Date($scope.tempArray[d].event_date), "to", $scope.upcomingEventTo);
console.log(new Date($scope.tempArray[d].event_date) > $scope.upcomingEventTo);
console.log("---");
if (new Date($scope.arrayOfEventData[d].event_date) < $scope.upcomingEventFrom || new Date($scope.arrayOfEventData[d].event_date) > $scope.upcomingEventTo) {
$scope.arrayOfEventData.splice(d, 1);
}
}
console.log($scope.arrayOfEventData, "after splice");
}
在控制台中,虽然我得到了一些比较,但它并没有被拼接。当我看到 finaly 数组时,它仍然具有应该被拼接的值,尽管它是 true 并且进入if
.
日期数组:
0: {
event_id: "49",
event_name: "julyevent",
event_date: "2018-07-13",
event_time: "11:00AM",
event_type_id: "2",
…
}
1: {
event_id: "50",
event_name: "up event1",
event_date: "2018-06-22",
event_time: "11:11AM",
event_type_id: "2",
…
}
2: {
event_id: "52",
event_name: "twe",
event_date: "2018-06-29",
event_time: "11:11AM",
event_type_id: "2",
…
}
3: {
event_id: "55",
event_name: "eve4",
event_date: "2018-06-23",
event_time: "10:22PM",
event_type_id: "2",
…
}
4: {
event_id: "56",
event_name: "eve5",
event_date: "2018-06-25",
event_time: "11:11AM",
event_type_id: "2",
…
}
5: {
event_id: "57",
event_name: "eve6",
event_date: "2018-06-28",
event_time: "10:00AM",
event_type_id: "2",
…
}
6: {
event_id: "58",
event_name: "eve7",
event_date: "2018-06-28",
event_time: "9:00AM",
event_type_id: "2",
…
}
7: {
event_id: "59",
event_name: "eve8",
event_date: "2018-07-12",
event_time: "7:00AM",
event_type_id: "2",
…
}
8: {
event_id: "60",
event_name: "eve9",
event_date: "2018-06-19",
event_time: "4:00AM",
event_type_id: "2",
…
}
9: {
event_id: "61",
event_name: "eve10",
event_date: "2018-06-20",
event_time: "8:00PM",
event_type_id: "2",
…
}
10: {
event_id: "62",
event_name: "eve11",
event_date: "2018-06-23",
event_time: "3:00AM",
event_type_id: "2",
…
}
11: {
event_id: "63",
event_name: "eve12",
event_date: "2018-06-21",
event_time: "10:22PM",
event_type_id: "2",
…
}
12: {
event_id: "64",
event_name: "eve13",
event_date: "2018-06-24",
event_time: "6:00AM",
event_type_id: "2",
…
}
解决方案
当您从递增循环的同一个数组拼接时,数组会修改并且项目会移动。因此,您可能会错过一次迭代。
你可以做的一件事是使用while循环向后循环,这样你就不会循环你拼接的方向。
let i = $scope.arrayOfEventData.length;
while(i--){
// your code
}
推荐阅读
- php - 为什么在 php 7 中添加回调类型提示会触发弃用警告
- flutter - 如何在颤动中制作填字游戏?
- linux - 工作因不明原因被杀
- javascript - 如何资源覆盖(逆向工程)URL 为 data:text/javascript;charset=UTF-8;base64,DQoNCi 的 javascript 文件
- html - 如何在不重新加载 Angular 页面的情况下刷新 UI
- .net - 如何授予 Azure 应用程序对 Azure SQL 的权限
- javascript - 在 bigquery 中创建一个 udf 以匹配数组输入
- r - R 可以做相当于嵌套在 VLOOKUP 中的 HLOOKUP 吗?
- c - 将 files.txt 设置为代码块中的程序参数
- java - 爪哇 | 使用正则表达式将单词和圆括号及其内容拆分为字符串数组的元素