Array.prototype.splice()

Метод splice() (зростити) змінює вміст масиву шляхом видалення чи заміни наявних елементів і/або додавання нових на місці (англ.). Щоб отримати частину масиву без внесення змін до нього, — зверніться до slice().

Спробуйте його в дії

Синтаксис

splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)

Параметри

start (початок)

Індекс, за яким почнуться зміни в масиві, перетворений на ціле число.

  • Від'ємний індекс рахується від кінця масиву: якщо start < 0, використовується start + array.length.
  • Якщо start < -array.length або start опущено, використовується 0.
  • Якщо start >= array.length, то жодний елемент не буде видалено, але метод спрацює як функція додавання, додаючи передані елементи.
deleteCount (кількість до видалення) Необов'язкове

Ціле число, що вказує, яку кількість елементів видалити, починаючи від start.

Якщо deleteCount опущено, або ж якщо його значення більше або рівне числу елементів, що стоять після позиції, заданої start, то всі елементи від start до кінця масиву будуть видалені. Проте якщо є потреба передати параметр чи параметри itemN, то слід за deleteCount передати Infinity – для видалення всіх елементів після start, тому що явне значення undefined перетворюється на 0.

Якщо deleteCount0 або від'ємне число, жоден елемент не видалиться. В цьому випадку необхідно вказати принаймні один новий елемент (див. далі).

item1, …, itemN Необов'язкове

Елементи, які буде додано до масиву, починаючи з індексу start. Якщо не вказано жодного, splice() лише видалить елементи з масиву.

Повернене значення

Масив, що містить всі видалені елементи.

Якщо видалено лише один елемент, буде повернено масив з одного елемента.

Якщо жодного елементу видалено не було, буде повернено порожній масив.

Опис

Метод splice() – це змінювальний метод. Він може змінити вміст this. Якщо кількість наданих для вставки елементів відрізняється від кількості елементів, які видаляються, властивість length масиву зміниться також. Крім того, він використовує @@species для створення нового примірника масиву, що повертається.

Якщо видалена частка є розрідженою, то повернений splice() масив також буде розрідженим, і відповідні індекси будуть порожніми комірками.

Метод splice() є узагальненим. Він лишень очікує, що значення this матиме властивість length, а також властивості з цілочисловими ключами. Попри те, що рядки також є масивоподібними, цей метод не підходить для застосування до них, адже рядки є незмінними значеннями.

Приклади

Видалити 0 (нуль) елементів перед індексом 2 та вставити "drum"

const myFish = ["янгол", "клоун", "мандаринка", "осетер"];
const removed = myFish.splice(2, 0, "горбань");

// myFish має ["янгол", "клоун", "горбань", "мандаринка", "осетер"]
// removed має [], жодного елементу видалено не було

Видалити 0 (нуль) елементів перед індексом 2 та вставити "drum" і "guitar"

const myFish = ["янгол", "клоун", "мандаринка", "осетер"];
const removed = myFish.splice(2, 0, "горбань", "рохля");

// myFish має ["янгол", "клоун", "горбань", "рохля", "мандаринка", "осетер"]
// removed має [], жодного елементу видалено не було

Видалити 1 елемент з індексом 3

const myFish = ["янгол", "клоун", "горбань", "мандаринка", "осетер"];
const removed = myFish.splice(3, 1);

// myFish має ["янгол", "клоун", "горбань", "осетер"]
// removed має ["мандаринка"]

Видалити 1 елемент з індексом 2 та вставити "trumpet"

const myFish = ["янгол", "клоун", "горбань", "осетер"];
const removed = myFish.splice(2, 1, "флейта");

// myFish має ["янгол", "клоун", "флейта", "осетер"]
// removed має ["горбань"]

Видалити 2 елементи, починаючи з індексу 0, та вставити "parrot", "anemone" і "blue"

const myFish = ["янгол", "клоун", "флейта", "осетер"];
const removed = myFish.splice(0, 2, "папуга", "анемонова", "луфар");

// myFish має ["папуга", "анемонова", "луфар", "флейта", "осетер"]
// removed має ["янгол", "клоун"]

Видалити 2 елементи, починаючи з індексу 2

const myFish = ["папуга", "анемонова", "луфар", "флейта", "осетер"];
const removed = myFish.splice(2, 2);

// myFish має ["папуга", "анемонова", "осетер"]
// removed має ["луфар", "флейта"]

Видалити 1 елемент з індексом -2

const myFish = ["янгол", "клоун", "мандаринка", "осетер"];
const removed = myFish.splice(-2, 1);

// myFish має ["янгол", "клоун", "осетер"]
// removed має ["мандаринка"]

Видалити всі елементи, починаючи з індексу 2

const myFish = ["янгол", "клоун", "мандаринка", "осетер"];
const removed = myFish.splice(2);

// myFish має ["янгол", "клоун"]
// removed має ["мандаринка", "осетер"]

Використання splice() на розріджених масивах

Метод splice() зберігає розрідженість масиву.

const arr = [1, , 3, 4, , 6];
console.log(arr.splice(1, 2)); // [порожньо, 3]
console.log(arr); // [1, 4, порожньо, 6]

Виклик splice() на об'єктах-немасивах

Метод splice() зчитує з this властивість length. Потім, за потреби, оновлює цілочислові властивості та властивість length.

const arrayLike = {
  length: 3,
  unrelated: "foo",
  0: 5,
  2: 4,
};
console.log(Array.prototype.splice.call(arrayLike, 0, 1, 2, 3));
// [ 5 ]
console.log(arrayLike);
// { '0': 2, '1': 3, '3': 4, length: 4, unrelated: 'foo' }

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
splice
Chrome Full support 1
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support 5.5
footnote
Opera Full support 4
Safari Full support 1
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також

  • push() / pop() — додати чи видалити елементи з кінця масиву
  • unshift() / shift() — додати чи видалити елементи з початку масиву
  • concat() — повертає новий масив, складений з цього масиву, з'єднаного з іншим масивом (масивами) та/чи значеннями