在此示例中,我试图基于索引值删除记录,但是为什么我的记录没有被正确删除? 我添加了尝试删除21.png和coo.png的屏幕截图,但是再次删除后,我得到的是2a.png而不是cat.png
$scope.remove = function (abc) {
var newDataList = [];
$scope.selectedAll = false;
var newval;
for (var i = 0; i < abc.length; i++) {
if (abc[i].selected == true) {
var _filedata = $scope.Files.indexOf(abc[i])
$scope.Files.splice(_filedata, 1)
}
}
}
答案 0 :(得分:2)
尝试以相反的方向迭代数组:
for (var i = abc.length - 1; i >= 0; i--) {
if (abc[i].selected == true) {
var _filedata = $scope.Files.indexOf(abc[i])
$scope.Files.splice(_filedata, 1)
}
}
当您以升序进行迭代并通过splice
修改数组时,您的for循环不知道它,并且i
变量带有原始数组的索引(在调用{{1}之后},索引已更改)。