Додавання і видалення елементів
Додавання і видалення елементів
Додавати елементи в масив, так само як і видаляти їх, можна також, як і звичайні властивості будь-яких інших об'єктів. З тією лише відмінністю, що при додаванні числових властивостей може зміняться властивість length. а при зміні властивості length можуть віддалятися числові властивості. У загальному випадку алгоритм установки властивостей у масивів приблизно наступний:
- При додаванні неіснуючого числового властивості i. якщо length менше або дорівнює i. то length встановлюється рівним i + 1.
- При зміні властивості length
- Якщо привласнюється значення менше 0. то впадає RangeError.
- Видаляються всі числові властивості, індекси яких більше і рівні новому length.
З того факту, що при установці length видаляються "зайві" елементи, слід спосіб очищення масиву. Якщо вас з якоїсь причини не влаштовує присвоювання змінної нового порожнього масиву, а потрібно саме обнулити існуючий, то досить привласнити його властивості length значення 0.
Методи push. pop. shift і unshift
Незважаючи на те, що можна і вручну змінювати елементи масиву, рекомендується використовувати для цього вбудовані методи, що гарантуватиме відсутність пропусків у масиві і коректне значення властивості length. Коректне в тому сенсі, що воно буде дорівнює кількості елементів масиву.
Метод push додає передані елементи в кінець масиву. Метод pop повертає останній елемент масиву і видаляє його.
Метод unshift додає передані елементи в початок масиву. Елементи будуть розташовуватися в тому ж порядку, в якому вони були передані. Метод shift повертає перший елемент масиву і видаляє його.
В Internet Explorer молодше 8-й версії unshift повертає undefined. у всіх інших браузерах - нове значення length. Так що краще не сподіватися на повертається від unshift значення.
Додавання / видалення елементів в середині масиву
Метод splice має сигнатуру Array.prototype.splice (start, deleteCount [, item1 [, item2 [.]]]).
Він видаляє з масиву deleteCount елементів починаючи з індексу start. Якщо передано більше двох аргументів, то третій і наступні аргументи вставляються в масив замість вилучених. Якщо start негативний, то індекс, з якого почнеться видалення, буде дорівнює length + start. Повертає масив з віддалених елементів. Таким чином за допомогою методу splice можна видаляти елементи з середини масиву або додавати довільну кількість в довільне місце масиву.
У найпростішому випадку, якщо потрібно видалити елемент з індексом i. то потрібно у масиву викликати метод splice з аргументами i і 1.
Взагалі кажучи, другий аргумент у методу splice необов'язковий, але поведінка функції з одним аргументів відрізняється в різних браузерах.
- У Firefox, в останніх версіях Opera, в Safari і в Chrome будуть видалені всі елементи від start до кінця масиву.
- В IE НЕ буде видалений жоден елемент.
- У більш ранніх версіях Opera поведінку ще менш передбачувана - буде видалений один елемент з індексом start - 1. тобто start -й за рахунком.
Тому завжди слід передавати в цей метод як мінімум два елементи.