Додавання і видалення елементів

Додавання і видалення елементів

Додавати елементи в масив, так само як і видаляти їх, можна також, як і звичайні властивості будь-яких інших об'єктів. З тією лише відмінністю, що при додаванні числових властивостей може зміняться властивість 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 -й за рахунком.

Тому завжди слід передавати в цей метод як мінімум два елементи.

Схожі статті