javascript - 使用另一个日期数组删除日期数组

标签 javascript angularjs arrays date datepicker

我正在使用 MultipleDatePicker选择一年中的多个日期。我添加了一个复选框,选中后它将选择日历中的所有星期日。

取消选中时出现问题。它不会删除日历中所有选定的星期日。我使用 getTime() 进行了比较,如下面的代码所示:

var selected = $scope.selectedDates;

for (var i = 0; i < $scope.selectedDates.length; i++) {
    var date1 = new Date(selected[i]).getTime();
    console.log('date1[' + i + '] = ' + date1 + ' ' + moment($scope.selectedDates[i], 'MM-DD-YYYY'));
    for (var j = 0; j < sundays.length; j++) {
        var date2 = new Date(sundays[j]).getTime();
        console.log('date2[' + j + '] = ' + date2 + ' ' + moment(sundays[j], 'MM-DD-YYYY'));
        if (date1 === date2) {
            selected.splice(i, 1);
            break;
        }
    }
}

有些相同,有些不同。代码有什么问题?

Here is the plunker显示问题。

最佳答案

问题是您从数组中删除了一项,并且您的索引 i 循环增加,因此跳过了一项。要解决此问题,请在每次删除后减少 i:

    // ...
    if (date1 === date2) {
        selected.splice(i, 1);
        i--;
        break;
    }

关于javascript - 使用另一个日期数组删除日期数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43935737/

相关文章:

javascript - 为什么我不能多次返回一个值 - 就像在 for 循环中一样?

javascript - php 生成的元素的图像覆盖

javascript - 无法访问数组的元素

javascript - 在 Angular 应用程序中加载 JSON 内容,具体取决于用户单击的项目

arrays - 将坐标对附加到 numpy 数组

javascript - 使用 Javascript 验证是 Armstrong 编号

javascript - 关闭编译器错误: JSC_NOT_A_CONSTRUCTOR

javascript - 使用 .then 不会触发服务方法

java - 将字符串 ["string"] 转换为字符串数组

java - 使用 System.nanoTime() 对不同长度的插入排序进行计时