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

Вопрос

Как правильно удалять элементы массива в JavaScript? Какие функции для этого используются?

Ответ №1

Есть 2 разных способа удалить элемент n из массива someArray:

delete someArray1[n];
someArray2.splice(n,1);

Первый является более быстрым, однако он по сути полностью не удаляет элемент, а задаёт его значение в undefined.

Второй способ более медленный, но он удаляет элемент полностью. Об этом уже упоминалось в этом вопросе.

Предположим, что у нас есть массив из нескольких элементов. Как известно, убедиться, что массив содержит некий элемент, можно с помощью функции someArray.hasOwnProperty(n). Если же пытаться получить доступ к несуществующему элементу массива, то получим undefined:

var someArray = new Array(2,6,7,17);
alert(someArray.hasOwnProperty(3)); // true
alert(someArray[3]); // 17
alert(someArray.hasOwnProperty(4)); // false (элемента не существует)
alert(someArray[4]); // undefined

Теперь удалим, к примеру, последний массива (someArray[3]) через оператор delete:

var someArray = new Array(2,6,7,17);
delete someArray[3];
alert(someArray[3]); // undefined
alert(someArray.hasOwnProperty(3)); // true

Как видите, элемент остаётся, хотя и возвращает undefined. Другими словами, наш массив будет иметь вид [2,6,7,undefined].

Теперь пойдём другим путём:

var someArray = new Array(2,6,7,17);
someArray.splice(3,1); // Удалим один (третий и последний) элемент массива
alert(someArray.hasOwnProperty(3)); // false, ведь его больше нет
alert(someArray[3]); // undefined

Естественно, метод someArray.splice(n,m) может использоваться и для удаления нескольких элементов подряд (удаляется m элементов, начиная с someArray[n]).

Нет комментариев

Добавить комментарий


(обязательно)