Вот несколько способов удалить элемент из массива с помощью JavaScript .
Все описанные методы не изменяют исходный массив , а вместо этого создают новый.
Если вы знаете индекс элемента
Предположим, у вас есть массив, и вы хотите удалить элемент в позиции i .
Один из методов заключается в использовании slice() :
const items = ['a', 'b', 'c', 'd', 'e', 'f'] const i = 2 const filteredItems = items.slice(0, i).concat(items.slice(i + 1, items.length)) // ["a", "b", "d", "e", "f"]
slice() создает новый массив с полученными индексами. Мы создаем новый массив, начиная с индекса, который мы хотим удалить, и объединяем другой массив с первой позиции, следующей за той, которую мы удалили, до конца массива.
Если вы знаете цену
В этом случае одним из хороших вариантов является использование filter() , который предлагает более декларативный подход:
const items = ['a', 'b', 'c', 'd', 'e', 'f'] const valueToRemove = 'c' const filteredItems = items.filter(item => item !== valueToRemove) // ["a", "b", "d", "e", "f"]
При этом используются функции стрелок ES6. Вы можете использовать традиционные функции для поддержки старых браузеров:
const items = ['a', 'b', 'c', 'd', 'e', 'f']
const valueToRemove = 'c'
const filteredItems = items.filter(function(item) {
return item !== valueToRemove
})
// ["a", "b", "d", "e", "f"]
или вы можете использовать Babel и перенести код ES6 обратно в ES5, чтобы сделать его более удобоваримым для старых браузеров, но при этом написать в своем коде современный JavaScript.
Удаление нескольких элементов
Что делать, если вместо одного элемента вы хотите удалить много элементов?
Давайте найдем самое простое решение.
По индексу
Вы можете просто создать функцию и последовательно удалять элементы:
const items = ['a', 'b', 'c', 'd', 'e', 'f'] const removeItem = (items, i) => items.slice(0, i-1).concat(items.slice(i, items.length)) let filteredItems = removeItem(items, 3) filteredItems = removeItem(filteredItems, 5) //["a", "b", "d", "e"]
По значению
Вы можете искать включение внутри функции обратного вызова:
const items = ['a', 'b', 'c', 'd', 'e', 'f'] const valuesToRemove = ['c', 'd'] const filteredItems = items.filter(item => !valuesToRemove.includes(item)) // ["a", "b", "e", "f"]
Избегайте изменения исходного массива
splice() (не путать с slice() ) изменяет исходный массив, и его следует избегать.
Оригинал: “https://flaviocopes.com/how-to-remove-item-from-array/”