Задать вопрос
@relows
Учусь веб дизайну и программированию

Как удалить объект из массива?

var arr = [
{id: 7, name: '2'},
{id: 1, name: '1'},
{id: 4, name: '2'},
{id: 2, name: '2'},
{id: 3, name: '3'}
]

Мне нужна функция, которая будет удалять объект с выбранным id
  • Вопрос задан
  • 18666 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const index = arr.findIndex(n => n.id === id);
if (index !== -1) {
  arr.splice(index, 1);
}

или, если нужен новый массив:

const newArr = arr.filter(n => n.id !== id);

Если же id имеют не уникальные значения, то создание нового массива остаётся без изменений, а модификация существующего может выглядеть так:

for (let i = 0; i < arr.length; i++) {
  if (arr[i].id === id) {
    for (let j = i--; ++j < arr.length; arr[j - 1] = arr[j]) ;
    arr.pop();
  }
}

или так:

arr.reduceRight((_, n, i, a) => n.id === id && a.splice(i, 1), null);

или так:

arr.splice(0, arr.length, ...arr.filter(n => n.id !== id));

или так:

arr.length -= arr.reduce((acc, n, i, a) => (
  a[i - acc] = n,
  acc + (n.id === id)
), 0);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы