MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Array.prototype.splice()

Переклад не закінчено. Будь ласка, допоможіть перекласти цю статтю з англійської.

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

Синтаксис

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

Аргументи

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

Повернення

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

Опис

Якщо Ви передасте різну кількість нових та видалених елементів, масив на виході з виклику матиме відмінну від початкової довжину.

Приклади

Використання splice()

Наступний скрипт демонструє способи використання методу splice():

var myFish = ['angel', 'clown', 'mandarin', 'surgeon'];

// removes 0 elements from index 2, and inserts 'drum'
var removed = myFish.splice(2, 0, 'drum');
// myFish is ['angel', 'clown', 'drum', 'mandarin', 'surgeon']
// removed is [], no elements removed

// myFish is ['angel', 'clown', 'drum', 'mandarin', 'surgeon'] 
// removes 1 element from index 3
removed = myFish.splice(3, 1);
// myFish is ['angel', 'clown', 'drum', 'surgeon']
// removed is ['mandarin']

// myFish is ['angel', 'clown', 'drum', 'surgeon'] 
// removes 1 element from index 2, and inserts 'trumpet'
removed = myFish.splice(2, 1, 'trumpet');
// myFish is ['angel', 'clown', 'trumpet', 'surgeon']
// removed is ['drum']

// myFish is ['angel', 'clown', 'trumpet', 'surgeon'] 
// removes 2 elements from index 0, and inserts 'parrot', 'anemone' and 'blue'
removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
// myFish is ['parrot', 'anemone', 'blue', 'trumpet', 'surgeon']
// removed is ['angel', 'clown']

// myFish is ['parrot', 'anemone', 'blue', 'trumpet', 'surgeon'] 
// removes 2 elements from index 2
removed = myFish.splice(myFish.length -3, 2);
// myFish is ['parrot', 'anemone', 'surgeon']
// removed is ['blue', 'trumpet']

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

Специфікація Статус Коментар
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 2017 Draft (ECMA-262)
The definition of 'Array.prototype.splice' in that specification.
Draft  

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

Функціональність Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базова підтримка 1.0 1.0 (1.7 or earlier) 5.5 (Yes) (Yes)
Функціональність Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базова підтримка (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Зворотня сумісність

У JavaScript 1.2 метод splice() повертає видалений елемент, коли видаляється лише один елемент (deleteCount рівний 1); у інших випадках метод повертає масив з видаленими елементами.

Зверніть увагу: Останній браузер, що використовував JavaScript 1.2 це Netscape Navigator 4, тож можна розраховувати на те, що splice() завжди повертає масив. Це той випадок, коли JavaScript об'єкт має властивість length та метод splice(), і console.log() вважає його Array-подібним об'єктом. Перевірка instanceof Array на ньому поверне false.

Варто переглянути

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

Мітки документа й учасники

 Зробили внесок у цю сторінку: vtytar
 Востаннє оновлена: vtytar,