【问题标题】:Remove array of date using another array of date使用另一个日期数组删除日期数组
【发布时间】:2017-10-11 15:44:27
【问题描述】:

我正在使用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 显示问题。

【问题讨论】:

  • 虽然您的问题已经解决,但我认为您可以使用 .isSame 来比较 momentJS 对象。当前代码看起来有点混乱。
  • 是的...感谢您的建议和改进

标签: javascript angularjs arrays date datepicker


【解决方案1】:

小错误,你忘了递减i,这里是更新代码。

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);
            i--;
            break;
        }
    }
}

【讨论】:

    【解决方案2】:

    我想你忘了递减i,当你做splice

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        • 2018-08-07
        • 1970-01-01
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多