Array.prototype.splice()

Метод splice() змінює вміст масиву, видаляючи існуючі та/або додаючи нові елементи.

Синтаксис

var arrDeletedItems = array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

Параметри

start
Індекс елемента, з якого розпочнеться зміна масиву. Якщо індекс більший за розмір масиву, start буде рівним довжині масиву. Якщо індекс від'ємний, позначатиме кількість елементів з кінця масиву (починаючи з -1, тобто -n означатиме індекс n-го елемента з кінця, і таким чином є еквівалентом array.length - n). Якщо абсолютна величина start є більшою за довжину масиву, зміни почнуться з індексу 0.
deleteCountOptional
Число, що вказує на кількість елементів масиву, які необхідно видалити, починаючи з індексу start.
Якщо аргумент deleteCount не заданий, або його значення більше чи дорівнює arr.length - start (тобто, більше чи дорівнює кількості елементів, які залишились у масиві, починаючи зі start), тоді будуть видалені всі елементи, починаючи зі start і до кінця масиву.
Якщо deleteCount рівний 0 або від'ємний, жоден елемент не буде видалений. У цьому випадку необхідно вказати хоча б один новий елемент для вставки (див. нижче).
item1, item2, ...Optional
Елементи, що будуть додані до масиву, починаючи з індексу start. Якщо не вказати жодного нового елемента, splice() лише видалить елементи з масиву.

Значення, що повертається

Масив видалених елементів. Якщо видалено лише один елемент, метод поверне масив з одним елементом. Якщо жоден з елементів не видалявся, метод повертає пустий масив.

Опис

Якщо задана кількість елементів для вставлення відрізняється від кількості елементів на видалення, довжина масиву зміниться після виконання функції.

Приклади

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

var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum');

// myFish дорівнює ["angel", "clown", "drum", "mandarin", "sturgeon"] 
// removed дорівнює [], жодний елемент не було видалено

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

var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum', 'guitar');

// myFish дорівнює ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
// removed дорівнює [], жодний елемент не було видалено

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

var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
var removed = myFish.splice(3, 1);

// removed дорівнює ["mandarin"]
// myFish дорівнює ["angel", "clown", "drum", "sturgeon"]

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

var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
var removed = myFish.splice(2, 1, 'trumpet');

// myFish дорівнює ["angel", "clown", "trumpet", "sturgeon"]
// removed дорівнює ["drum"]

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

var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');

// myFish дорівнює ["parrot", "anemone", "blue", "trumpet", "sturgeon"] 
// removed дорівнює ["angel", "clown"]

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

var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon'];
var removed = myFish.splice(2, 2);

// myFish дорівнює ["parrot", "anemone", "sturgeon"] 
// removed дорівнює ["blue", "trumpet"]

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

var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(-2, 1);

// myFish дорівнює ["angel", "clown", "sturgeon"]
// removed дорівнює ["mandarin"]

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

var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2);

// myFish дорівнює ["angel", "clown"] 
// removed дорівнює ["mandarin", "sturgeon"]

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

Специфікація Статус Коментар
ECMAScript 3rd Edition (ECMA-262) Standard Початкове визначення. Реалізовано у JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
The definition of 'Array.prototype.splice' in that specification.
Standard
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.splice' in that specification.
Standard
ECMAScript Latest Draft (ECMA-262)
The definition of 'Array.prototype.splice' in that specification.
Draft

Підтримка веб-переглядачів

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
spliceChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5.5Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Див. також

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