【问题标题】:Removing items in a loop and adding a new array删除循环中的项目并添加新数组
【发布时间】:2018-10-23 04:26:37
【问题描述】:

我想将数据添加到新数组中,并在单击按钮时从当前列表中删除数据。现在它只删除最后一个项目,有时会删除两个选中的项目而不是 4-6 个项目。

$scope.LoadBack = function () {
  for (var i = 0; i < $scope.MyArrold.length; i++) {
    if ($scope.MyArrold[i].checked == true) { 
      $scope.BackList.push(angular.extend({}, $scope.MyArrold[i]));            
      var index = $scope.MyArrold.indexOf($scope.MyArrold[i]);
      $scope.MyArrold.splice(index, 1);
    }
  }
}

【问题讨论】:

  • 只需添加 i--;拼接数组后。

标签: angularjs angularjs-scope


【解决方案1】:

当您处于遍历数组的循环中时,您正在从数组中删除项目。这行不通。

解决此问题的一种方法是将要保留的项目添加到临时数组中,然后在循环完成后将该数组分配回 MyArrold。

解决此问题的另一种方法是在临时数组中跟踪您希望删除的索引,然后在循环完成后迭代该数组,向后!要使用此解决方案,您必须向后迭代,否则所有未来的索引都将失效。

【讨论】:

    【解决方案2】:
    var i = $scope.MyArrold.length;
    while (i--) {
       if ($scope.MyArrold[i].checked === true) {          
          $scope.MyArrold.splice(i, 1);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-11-05
      • 2021-12-25
      相关资源
      最近更新 更多