Какие знаешь быстрые способы удалить элемент из массива по значению

Ответ

В JavaScript есть несколько способов удалить элемент из массива по значению:

  1. filter() - создает новый массив без указанного элемента:
const arr = [1, 2, 3, 4];
const valueToRemove = 3;
const newArr = arr.filter(item => item !== valueToRemove);
  1. splice() с indexOf() - изменяет исходный массив:
const arr = [1, 2, 3, 4];
const valueToRemove = 3;
const index = arr.indexOf(valueToRemove);
if (index > -1) {
  arr.splice(index, 1);
}
  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() (чтоб по одному, смакуя). Вот такие пироги, в рот меня чих-пых!