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
.Якщо
deleteCount
—0
або від'ємне число, жоден елемент не видалиться. В цьому випадку необхідно вказати принаймні один новий елемент (див. далі).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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
splice
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 5.5 | 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 |