Удалить объект из массива JavaScript

У меня есть такой массив

var items = [{id:'1',token:'jj'},{id:'2',token:'kk'}];

Я хочу удалить объект из массива, соответствующий id = 2

Вот мое решение

//find the corresponding object
let obj=items.find((item) => item.id=='2');
//loop through the original and delete

Есть ли другой способ сделать это более эффективно ??

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
48
4

Ответы 4

Используйте функцию Массив # фильтр для удаления элемента / ов из массива. Фактически он возвращает новый массив, содержащий те элементы, которые соответствуют предикату.

let items = [{id:'1',token:'jj'},{id:'2',token:'kk'}];
let filtered = items.filter(item => item.id !== '2');

console.info(filtered);

Для удаления из исходного массива

let items = [{id:'1',token:'jj'},{id:'2',token:'kk'}];
let index = items.findIndex(item => item.id === '2');

items.splice(index, 1);

console.info(items);

Но мне нужно изменить исходный массив

iam batman 05.06.2018 09:51

Это неэффективно. Вам нужно получить индекс этого элемента из массива и использовать функцию splice. Я обновил

Suren Srapyan 05.06.2018 09:52

Я хотел бы предложить использовать splice, это не меняет ссылку на существующий массив, а просто удаляет желаемый элемент.

let items = [{id:'1',token:'jj'},{id:'2',token:'kk'}];

let indexToRemove = items.findIndex((eachElem) => {return eachElem.id == 2})
items.splice(indexToRemove, 1)
console.info(items)

Можете проверить консоль: D

var items = [{id:'1',token:'jj'},{id:'2',token:'kk'}, {id:'4',token:'kk'}, {id:'2',token:'kl'}];
items.forEach(item =>{
 if (item['id'] == '2') items.splice(items.indexOf(item),1)
})

console.info(items)

Вы также можете использовать splice() с forEach():

var items = [{id:'1',token:'jj'},{id:'2',token:'kk'}];
items.forEach((item, index) => {
   if (item.id === '2'){
     items.splice(index,1);
   }
});
console.info(items);

Другие вопросы по теме