Javascript 为什么我的数组没有删除正确的记录

Javascript 为什么我的数组没有删除正确的记录,javascript,angularjs,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++) {

在本例中,我试图根据索引值删除记录,但为什么没有正确删除记录? 我添加了一个屏幕截图,试图删除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)           
        } 
    }
}
$scope.remove=函数(abc){
var newDataList=[];
$scope.selectedAll=false;
var newval;
对于(变量i=0;i

尝试反向迭代数组:

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
变量携带原始数组的索引时(调用
splice
后,索引已更改)

使用拼接法,这可能会有所帮助。是的,这是一个完美的答案。