AlexaShemetova
@AlexaShemetova
While I'm breathing - I love and believe

Как удалить элементы массива внутри цикла JS?

Есть массив с индексами которые являются индексами элементов в другом массиве, как удалить из второго массива эти элементы? В моем примере удаляется только первый элемент Предмет_1. второй остается, да понимаю что идет смещение индексов, но как это обойти, уже не знаю что делать
var invItems = [
    {
        nameItem: 'Предмет_1'
    },
  {
        nameItem: 'Тест'
  },
    {
        nameItem: 'Предмет_2'
    }
];

var arr = [0,2];

for (var i = 0; i < arr.length; i++) {
  var index = arr[i];
  invItems.splice(index, 1);
}
console.log(invItems);
  • Вопрос задан
  • 2357 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
идет смещение индексов, но как это обойти, уже не знаю

Перебирайте массив индексов с конца:

for (let i = arr.length; i--; ) {
  invItems.splice(arr[i], 1);
}

Или, собирайте новый массив с данными, вместо изменения того, что есть:

invItems = invItems.filter((n, i) => !arr.includes(i));
Ответ написан
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
var invItems = [
    {
        nameItem: 'Предмет_1'
    },
  {
        nameItem: 'Тест'
  },
    {
        nameItem: 'Предмет_2'
    }
];

var arr = [0,2],
    arrLength = invItems.length;

for (var i = 0; i < arrLength; i++) {
   for (var j = 0; i < arr.length; j++) {
       if (i === j) {
           invItems.splice(i, 1);
           break;
       }
   }
  
}
console.log(invItems);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
04 дек. 2021, в 09:48
900 руб./за проект
04 дек. 2021, в 08:27
150000 руб./за проект