почему мой массив не удаляет правильные записи - PullRequest
0 голосов
/ 04 апреля 2019

В этом примере я пытаюсь удалить записи на основе значения моего индекса, но почему мои записи не удаляются должным образом?Я добавил снимок экрана, на котором я пытаюсь удалить 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 Ответ

2 голосов
/ 04 апреля 2019

Попробуйте перебрать массив в обратном направлении:

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 индексы изменились) ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...