Ответ
В JavaScript есть несколько способов удалить элемент из массива по значению:
- filter() - создает новый массив без указанного элемента:
const arr = [1, 2, 3, 4];
const valueToRemove = 3;
const newArr = arr.filter(item => item !== valueToRemove);
- splice() с indexOf() - изменяет исходный массив:
const arr = [1, 2, 3, 4];
const valueToRemove = 3;
const index = arr.indexOf(valueToRemove);
if (index > -1) {
arr.splice(index, 1);
}
- Лодаш (если используется библиотека):
_.remove(array, value);
Важные нюансы:
filter()не изменяет исходный массивsplice()мутирует массивindexOf()не найдет объекты (нужно использоватьfindIndex())- Для удаления всех вхождений нужно использовать
filter()или цикл сsplice()
Ответ 18+ 🔞
А, ну это же классика, блядь! Опять этот JavaScript со своими массивами и удалением элементов. Слушай, как будто на зоне сидишь и думаешь: "Как бы мне этого стукача, Петровича, из нашего братского списка убрать, чтобы мусора не нашли?" Так вот, есть варианты.
Первый способ — через filter(). Это как взять новый мешок и сложить туда всё, кроме Петровича. Чисто, аккуратно, старый мешок не трогаешь.
const arr = [1, 2, 3, 4];
const valueToRemove = 3;
const newArr = arr.filter(item => item !== valueToRemove);
Второй способ — splice() с indexOf(). Это уже по-бандитски: находишь Петровича в строю (indexOf()), подходишь и — хрясь! — выкидываешь нахуй одним движением. Массив меняется на месте, без всяких новых мешков.
const arr = [1, 2, 3, 4];
const valueToRemove = 3;
const index = arr.indexOf(valueToRemove);
if (index > -1) {
arr.splice(index, 1);
}
А если у тебя Лодаш подключен, то там вообще одна строка: _.remove(array, value);. Как будто заказ кинул — и дело сделано.
Но смотри, ёпта, подводные камни есть, как говна в проруби:
filter()— старый массив не трогает, новый создаёт. Как будто ты клонировал себя, а оригинал остался пить чай.splice()— работает по месту, мутирует всё. По-русски: "ломать — не строить".indexOf()с объектами не пашет — он ж не телепат, блядь. Для объектов надоfindIndex()юзать.- А если Петровичей несколько и всех надо замочить? Тогда либо
filter()(чтоб всех разом), либо цикл сsplice()(чтоб по одному, смакуя). Вот такие пироги, в рот меня чих-пых!