删除循环中的项目并添加新数组

时间:2018-10-21 19:30:19

标签: angularjs angularjs-scope

我想在单击按钮时将数据添加到新数组中并从当前列表中删除数据。现在,它只会删除最后一个项目,有时会删除两个选中的项目,而不是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);
    }
  }
}

2 个答案:

答案 0 :(得分:1)

在循环遍历数组的循环中,要从数组中删除项目。那是行不通的。

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

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

答案 1 :(得分:0)

var i = $scope.MyArrold.length;
while (i--) {
   if ($scope.MyArrold[i].checked === true) {          
      $scope.MyArrold.splice(i, 1);
   }
}