为什么我的阵列没有删除适当的记录

时间:2019-04-04 07:03:39

标签: javascript angularjs

在此示例中,我试图基于索引值删除记录,但是为什么我的记录没有被正确删除? 我添加了尝试删除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)           
        } 
    }
}

enter image description here

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}之后},索引已更改)。