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

Есть 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]).

Похожие вопросы
Добавить ответ
Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Нажимая кнопку «Отправить», я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности этого сайта.