JS метод Array.splice()
Опис
Метод splice() змінює вміст масиву, видаляючи або замінюючи існуючі елементи та/або додаючи нові елементи на вказане місце. Якщо кількість елементів, які потрібно вставити, не співпадає з кількістю елементів, які видаляються, довжина масиву відповідно змінюється.
Нижче наведено приклад використання методу splice():
let fruits = ["apple", "banana", "mango", "orange"];
fruits.splice(2, 1, "kiwi");
console.log(fruits); // Output: ["apple", "banana", "kiwi", "orange"]
У цьому прикладі ми замінюємо mango на kiwi. При цьому mango видаляється з масиву, а на його місце додається kiwi. Таким чином, результатом виконання коду буде масив ["apple", "banana", "kiwi", "orange"].
Зверніть увагу, що якщо видалена частина масиву була розрідженою, то масив, що повертається за допомогою splice(), також буде розрідженим, із відповідними порожніми слотами.
| Порада: | Якщо ви хочете просто видалити елементи без додавання нових, ви можете передати тільки перший і другий аргументи. Наприклад, |
| Порада: | Метод |
| Нотатка: | Якщо видаляється лише один елемент, повертається масив з одним елементом. Якщо немає видалених елементів, повертається порожній масив. |
| Нотатка: | Метод |
| Нотатка: |
|
| Нотатка: | Незважаючи на те, що структура рядків схожа на структуру масивів, цей метод не підходить для них, оскільки рядки в JavaScript є незмінними. |
Синтаксис
splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item0)
splice(start, deleteCount, item0, item1)
splice(start, deleteCount, item0, item1, /* … ,*/ itemN)
Параметри
- *
start Нульовий індекс (перетворений в ціле число), з якого починається зміна масиву.
- Негативний індекс відлічується від кінця масиву - якщо
start < 0, використовуєтьсяstart + array.length. - Якщо
start < -array.length, використовується 0. - Якщо
start >= array.length, жоден елемент не буде видалено, але метод поведе себе як функція додавання, додавши стільки елементів, скільки надано. - Якщо
startне вказано (і методsplice()викликається без аргументів), нічого не видаляється. Це відрізняється від передачіundefined, яке перетворюється на 0.
- Негативний індекс відлічується від кінця масиву - якщо
deleteCountЦіле число, що вказує кількість елементів, які слід видалити з масиву починаючи з позиції
start.Якщо
deleteCountне вказано, або якщо його значення більше або дорівнює кількості елементів після позиції, вказаної вstart, то всі елементи відstartдо кінця масиву будуть видалені.Якщо
deleteCountдорівнює 0 або є від'ємним, жоден елемент не видаляється.item0, …, itemNЕлементи, які додаються до масиву, починаючи з позиції
start. Якщо ви не вказуєте жодних елементів, методsplice()буде лише видаляти елементи з масиву.
Return
arrayМасив, що містить видалені елементи.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
1 |
1 |
1 |
4 |
12 |
| Переглядач | ||||
|---|---|---|---|---|
4.4 |
18 |
4 |
1 |
| Переглядач | ||
|---|---|---|
0.10.0 |
1.0 |
Приклади
Цей приклад демонструє використання методу splice() для додавання, заміни та видалення елементів масиву. Кожна операція відображається окремо, що дозволяє краще зрозуміти, як працює цей метод.
Видалення 1 елемента за індексом 3.
const myFish = ["angel", "clown", "drum", "mandarin", "sturgeon"];
const removed = myFish.splice(3, 1);
// myFish стає ["angel", "clown", "drum", "sturgeon"]
// removed стає ["mandarin"]
Видалення 2 елементів, починаючи з індексу 2.
const myFish = ["parrot", "anemone", "blue", "trumpet", "sturgeon"];
const removed = myFish.splice(2, 2);
// myFish стає ["parrot", "anemone", "sturgeon"]
// removed стає ["blue", "trumpet"]
Метод splice() зберігає розрідженість масиву.
const arr = [1, , 3, 4, , 6];
console.log(arr.splice(1, 2)); // [empty, 3]
console.log(arr); // [1, 4, empty, 6]
Виклик splice() на не-масивних об'єктах.
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' }
Видалення 0 (нуль) елементів перед індексом 2 та вставлення "drum".
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(2, 0, "drum");
// myFish стає ["angel", "clown", "drum", "mandarin", "sturgeon"]
// removed стає [], жоден елемент не було видалено
