Array.splice() в JavaScript — видалити й вставити елементи масиву
Опис
Метод 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(), також буде розрідженим, із відповідними порожніми слотами.
Загальний опис
автор: NagarD
- Порада
-
Якщо ви хочете просто видалити елементи без додавання нових, ви можете передати тільки перший і другий аргументи. Наприклад,
автор: Bondarray.splice(2, 3)видалить3елементи починаючи з індексу2. - Порада
-
Метод
автор: Bondsplice()змінює вихідний масив і повертає масив, що містить видалені елементи. Це може бути корисно, якщо вам потрібно зберегти видалені елементи для подальшої обробки. - Нотатка
-
Якщо видаляється лише один елемент, повертається масив з одним елементом. Якщо немає видалених елементів, повертається порожній масив.
автор: Bond - Нотатка
-
Метод
автор: Bondsplice()застосовується, коли потрібно змінити вміст масиву без створення нового масиву. Якщо ж ви бажаєте створити новий масив, видаливши або замінивши його сегмент, і при цьому не змінюючи оригінальний масив, використовуйте методtoSpliced(). Щоб отримати доступ до сегментів масиву без його змін, скористайтеся методомslice(). - Нотатка
-
автор: Bondsplice()є універсальним методом, який очікує, що значенняthisматиме властивістьlengthта цілочисельні властивості з ключами. - Нотатка
-
Незважаючи на те, що структура рядків схожа на структуру масивів, цей метод не підходить для них, оскільки рядки в JavaScript є незмінними.
автор: Bond
Синтаксис
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до кінця масиву будуть видалені.Якщо
автор: BonddeleteCountдорівнює 0 або є від'ємним, жоден елемент не видаляється. item0, …, itemN-
Елементи, які додаються до масиву, починаючи з позиції
автор: Bondstart. Якщо ви не вказуєте жодних елементів, методsplice()буде лише видаляти елементи з масиву.
Повернення
array-
Масив, що містить видалені елементи.
автор: Bond
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 4 | 12 | 5.5 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 4 | 1 |
| Переглядач | ||
|---|---|---|
| 0.10.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
const myFish = ["parrot", "anemone", "blue", "trumpet", "sturgeon"];
const removed = myFish.splice(2, 2);
console.log(myFish); // → ["parrot", "anemone", "sturgeon"]
console.log(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]
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(2, 0, "drum");
console.log(myFish); // → ["angel", "clown", "drum", "mandarin", "sturgeon"]
console.log(removed); // → [], жоден елемент не було видалено
Цей приклад демонструє використання методу splice() для додавання, заміни та видалення елементів масиву. Кожна операція відображається окремо, що дозволяє краще зрозуміти, як працює цей метод.
HTML
<header>
<h2 class="title">Використання методу splice() з масивом</h2>
<p class="description">Демонстрація використання методу splice() для модифікації масиву.</p>
</header>
<main>
<div class="result">
<h3 class="result-title">Початковий масив:</h3>
<pre id="initialArray"></pre>
<h3 class="result-title">Результат додавання елементів:</h3>
<pre id="addResult"></pre>
<h3 class="result-title">Результат заміни елементів:</h3>
<pre id="replaceResult"></pre>
<h3 class="result-title">Результат видалення елементів:</h3>
<pre id="deleteResult"></pre>
</div>
</main>
CSS
body {
font-size: 16px;
line-height: 1.5;
font-family: monospace;
}
header {
background-color: #f1f1f1;
margin-bottom: 25px;
padding: 15px;
-webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
-moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
header h2.title {
padding-bottom: 15px;
border-bottom: 1px solid #999;
}
header p.description {
font-style: italic;
color: #222;
}
.result {
background-color: #f8f8f8;
padding: 15px;
-webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
-moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
.result-title {
font-weight: bold;
color: #333;
}
JS
const months = ['Jan', 'March', 'April', 'June'];
// Виводимо початковий масив
document.getElementById('initialArray').innerText = JSON.stringify(months, null, 2);
months.splice(1, 0, 'Feb');
// Вставляємо на 1 індекс
document.getElementById('addResult').innerText = JSON.stringify(months, null, 2);
months.splice(4, 1, 'May');
// Замінюємо 1 елемент на 4 індексі
document.getElementById('replaceResult').innerText = JSON.stringify(months, null, 2);
months.splice(0, 2);
// Видаляємо два елементи, починаючи з 0 індексу
document.getElementById('deleteResult').innerText = JSON.stringify(months, null, 2);
//# sourceURL=pen.js
Що саме повертає splice(), чим splice(2) відрізняється від splice(2, undefined) і чому slice() — не те саме.
const fruits = ['яблуко', 'банан', 'манго', 'слива'];
// splice ПОВЕРТАЄ вилучене, а змінений масив лишається в змінній
const removed = fruits.splice(1, 2);
console.log('вилучено:', removed); // ['банан', 'манго']
console.log('лишилось:', fruits); // ['яблуко', 'слива']
// без другого аргументу — ріже до кінця
const a = [1, 2, 3, 4, 5];
a.splice(2);
console.log('splice(2):', a); // [1, 2]
// а з undefined — не видаляє нічого
const b = [1, 2, 3, 4, 5];
b.splice(2, undefined);
console.log('splice(2, undefined):', b); // [1, 2, 3, 4, 5]
// вставка без видалення
const c = ['a', 'd'];
c.splice(1, 0, 'b', 'c');
console.log('вставка:', c); // ['a', 'b', 'c', 'd']
// slice оригінал не чіпає
const d = [1, 2, 3, 4, 5];
console.log('slice(1, 3):', d.slice(1, 3), 'оригінал:', d);
const myFish = ["angel", "clown", "drum", "mandarin", "sturgeon"];
const removed = myFish.splice(3, 1);
console.log(myFish); // → ["angel", "clown", "drum", "sturgeon"]
console.log(removed); // → ["mandarin"]
Виклик 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' }
Коментарі
Коментарів ще немає — будьте першим!