JavaScript | Как удалить элемент массива? — efim360.ru

JavaScript | Как удалить элемент массива?

 

Способ № 1  - Удаление элемента массива со сдвигом

Есть массив:

let arr = [22, 33, 11, 77, 56, 39, 323]

Нам нужно удалить элемент со значением 77 и сдвинуть оставшуюся часть влево (ближе к началу).

Сделать это можно при помощи метода filter():

arr.filter(i => i != 77)

В фильтр мы передаём стрелочную функцию, в которой проверяем Нам вернётся новый массив, без элемента со значением 77. "Пустот или дыр" в массиве не будет.

Удалили один элемент массива и сдвинули остальные методом filter() - JavaScript
Удалили один элемент массива и сдвинули остальные методом filter() - JavaScript

Важно! Метод filter() не изменяет оригинальный массив. Он просто вызывается на оригинальном массиве, но возвращает всегда новый экземпляр. Это говорит о том, что вызов метода filter() никак не влияет на оригинальный массив.

Поэтому, чтобы изменить оригинальный массив, нужно написать выражение:

arr = arr.filter(i => i != 77)

 

Способ № 2  - использование оператора delete

Мы можем удалить значение элемента из массива при помощи оператора delete. Для этого мы пишем слово delete и справа от него пишем конструкцию, которая будет обращаться к нужному нам элементу массива. Стандарт ECMAScript - Раздел "13.5.1 The delete Operator" - https://tc39.es/ecma262/#sec-delete-operator

В нашем случае мы хотим удалить значение из первого элемента массива. Поэтому мы должны обратиться к индексу 0 (ноль).

var massiv = [1, 2, 3, 4]
delete massiv[0]
[empty, 2, 3, 4]
Удалили первый элемент массива - JavaScript
Удалили первый элемент массива - JavaScript

Из оригинального массива мы удалили нужное нам значение элемента, но теперь в массиве образовалась "дырка". Браузер нам подсвечивает эту дырку словом "empty". Если сейчас попытаться обратиться к первому элементу массива, то мы получим undefined, т. к. такого значения элемента уже не существует.

Первого элемента массива не существует, он был удалён - JavaScript
Первого элемента массива не существует, он был удалён - JavaScript

Мы успешно удалили ЗНАЧЕНИЕ элемента массива. Причём удобно то, что все оставшиеся элементы массива не изменили своего положения. Значения лежат под теми же индексами.

 

Информационные ссылки

JavaScript | Массивы (Array)

Стандарт ECMAScript - https://tc39.es/ecma262/multipage/

Стандарт ECMAScript - Раздел "23.1.3.8 Array.prototype.filter ( callbackfn [ , thisArg ] )" - https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.filter

Стандарт ECMAScript - Раздел "ReservedWord" (Зарезервированные слова) - https://tc39.es/ecma262/#prod-ReservedWord