Удаление элементов в цикле и добавление нового массива - PullRequest
0 голосов
/ 21 октября 2018

Я хочу добавить данные в новый массив и удалить данные из текущего списка одним нажатием кнопки.Сейчас он удаляет только последний элемент, а иногда и два проверенных элемента, а не 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);
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 22 октября 2018
var i = $scope.MyArrold.length;
while (i--) {
   if ($scope.MyArrold[i].checked === true) {          
      $scope.MyArrold.splice(i, 1);
   }
}
0 голосов
/ 21 октября 2018

Вы удаляете элементы из массива, пока находитесь в цикле, который выполняет итерацию по массиву.Это не работает.

Один из способов решить эту проблему - добавить элементы, которые вы хотите сохранить, во временный массив, а затем присвоить этот массив обратно MyArrold после завершения цикла.

ДругойЧтобы решить эту проблему, нужно отследить индексы, которые вы хотите удалить во временном массиве, а затем выполнить итерацию по этому массиву после завершения цикла, назад!Чтобы использовать это решение, вы должны выполнить итерацию в обратном направлении, иначе все будущие индексы станут недействительными.

...