JavaScript: как удалить значения из массива

Массивом называется упорядоченный тип данных, хранящий несколько значений. Это означает, что каждый элемент в массиве имеет числовой идентификатор (индекс), который используется для ссылки на его место в строке.
Массивы начинаются с индекса 0 и увеличиваются на 1 для каждого значения. Для обращения к значению в массиве воспользуйтесь соответствующим индексом и заключите его в квадратные скобки [] .
Но что, если мы захотим удалить значение из нашего массива? Для этого существует четыре способа, каждый из которых имеет свои плюсы и минусы, о которых поговорим ниже.
Примечание: все четыре способа доступны без какого-либо импорта дополнительных библиотек.
Через ключевое слово delete
Если вы не любите сложностей, то воспользуйтесь простейшим методом удаления значений из массива — ключевым словом delete . Вам нужно всего лишь указать имя переменной с индексом, который хотите удалить.
Но будьте внимательны. Несмотря на кажущуюся простоту данного способа, он часто приводит к лишней головной боли, поскольку теперь в вашем массиве зияет дыра.
Основной вывод: при удалении значения из массива через delete задайте себе вопрос: «Нужно ли мне переиндексировать массив?».
Через метод pop()
Вам нужно удалить самое большое индексное значение из массива? Или же вы хотите переиндексировать массив так, чтобы избавиться от undefined в конце? Тогда метод pop() — это то, что доктор прописал.
Через метод splice()
Если вы хотите удалить определенное значение из массива, а не конкретный индекс, и вы готовы к переиндексации массива, то присмотритесь к методу splice() .
Сплайсинг массива создает новый массив, который удаляет некое количество значений и обрезает массив слева, начиная с определенного индекса.
Если же вы хотите удалить только одно значение, то воспользуйтесь вторым (не обязательным) параметром в методе splice() .
Обратите внимание, что мы не выводим результат массива сразу. Это потому, что данный метод будет возвращать удаленные значения.
Все, конечно, круто и здорово, однако в реальных примерах вам, вряд ли, удастся захардкодить значение индекса. Поэтому давайте воспользуемся методом indexOf() для поиска индекса значения, соответствующего условию.
Условие if в этом коде используется для того, чтобы подтвердить нахождение значения в массиве. Если же значение не найдено, то метод indexOf() вернет -1 . Таким образом, если i больше или равно 0 , то это значение было найдено в массиве.
Через метод filter()
Метод splice() весьма удобен для нахождения и удаления одного значения. Но бывает так, что вам нужно удалить все вхождения значения (или условия) из массива. В таком случае, вашим новым другом станет метод filter() .
Этот метод принимает функцию в качестве аргумента и сохраняет значения, соответствующие true в функции filter . Чтобы отфильтровать определенное значение, необходимо проверить отрицательные индексы.
Обратите внимание, что нам приходится заново присваивать номера индексов. Дело в том, что, в отличие от метода splice() , filter() возвращает новый массив, а не выполняет действия с исходными данными.
Заключение
Это не все способы удаления значений из массива, но и среди указанных можете выбрать метод по душе или же придумать что-то свое.
Удалить пустые элементы из массива в Javascript
Есть ли простой способ, или мне нужно пройти через него и удалить их вручную?
29 ответов
РЕДАКТИРОВАТЬ: На этот вопрос ответили почти девять лет назад, когда в Array.prototype было не так много полезных встроенных методов.
Теперь, конечно, я бы порекомендовал вам использовать метод filter .
Помните, что этот метод вернет вам новый массив с элементами, которые соответствуют критериям функции обратного вызова, которую вы ему предоставляете.
Например, если вы хотите удалить значения null или undefined :
Это будет зависеть от того, что вы считаете «пустым», например, если вы имели дело со строками, вышеуказанная функция не удалит элементы, которые являются пустой строкой.
Один типичный шаблон, который я часто использую, — это удаление элементов, которые являются ложными , включая пустую строку «» , 0 , NaN , <
Вы можете перейти к методу filter , функции конструктора Boolean или вернуть тот же элемент в функцию критериев фильтрации, например:
В обоих случаях это работает, потому что метод filter в первом случае вызывает конструктор Boolean как функцию, преобразовывая значение, а во втором случае метод filter внутренне превращается возвращаемое значение обратного вызова неявно в Boolean .
Если вы работаете с разреженными массивами и пытаетесь избавиться от «дыр», вы можете использовать метод filter , передавая обратный вызов, который возвращает true, например:
How to Remove undefined Values From a JavaScript Array?
Quick tip to filter out undefined values from a JavaScript array
- Daniyal Hamid
- 15 Dec, 2020
- 2 Topics
- 1 min read
Using filter()
To remove undefined values from a JavaScript array, you can simply use the filter() method like so:
Or alternatively, you can use the arrow function syntax (introduced in ES6) for a one-liner like the following:
Using for Loop
If you’re unable to use the latest features of JavaScript, then you can use a for loop to create a new array with filtered values. For example:
Hope you found this post useful. It was published 15 Dec, 2020 . Please show your love and support by sharing this post.