我想在单击按钮时将数据添加到新数组中并从当前列表中删除数据。现在,它只会删除最后一个项目,有时会删除两个选中的项目,而不是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);
}
}
}
答案 0 :(得分:1)
在循环遍历数组的循环中,要从数组中删除项目。那是行不通的。
解决此问题的一种方法是将要保留的项目添加到临时数组,然后在循环完成后将该数组分配回MyArrold。
解决此问题的另一种方法是在临时数组中跟踪要删除的索引,然后在循环完成后向后遍历该数组!要使用此解决方案,您必须向后迭代,否则所有将来的索引都将无效。
答案 1 :(得分:0)
var i = $scope.MyArrold.length;
while (i--) {
if ($scope.MyArrold[i].checked === true) {
$scope.MyArrold.splice(i, 1);
}
}