The splice()
method changes the contents of an array by removing existing elements and/or adding new elements.
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; myFish.splice(2, 0, 'drum'); // insert 'drum' at 2-index position // myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"] myFish.splice(2, 1); // remove 1 item at 2-index position (that is, "drum") // myFish is ["angel", "clown", "mandarin", "sturgeon"]
Syntax
array.splice(start) array.splice(start, deleteCount) array.splice(start, deleteCount, item1, item2, ...)
Parameters
start
- Index at which to start changing the array (with origin 0). If greater than the length of the array, actual starting index will be set to the length of the array. If negative, will begin that many elements from the end of the array (with origin 1) and will be set to 0 if absolute value is greater than the length of the array.
deleteCount
Optional- An integer indicating the number of old array elements to remove. If
deleteCount
is 0, no elements are removed. In this case, you should specify at least one new element. IfdeleteCount
is greater than the number of elements left in the array starting atstart
, then all of the elements through the end of the array will be deleted. - If
deleteCount
is omitted, or if its value is larger thanarray.length - start
, then all of the elements beginning withstart
index on through the end of the array will be deleted. item1, item2, ...
Optional- The elements to add to the array, beginning at the
start
index. If you don't specify any elements,splice()
will only remove elements from the array.
Return value
An array containing the deleted elements. If only one element is removed, an array of one element is returned. If no elements are removed, an empty array is returned.
Description
If you specify a different number of elements to insert than the number you're removing, the array will have a different length at the end of the call.
Examples
Remove 0 elements from index 2, and insert "drum"
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(2, 0, 'drum'); // myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"] // removed is [], no elements removed
Remove 1 element from index 3
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']; var removed = myFish.splice(3, 1); // removed is ["mandarin"] // myFish is ["angel", "clown", "drum", "sturgeon"]
Remove 1 element from index 2, and insert "trumpet"
var myFish = ['angel', 'clown', 'drum', 'sturgeon']; var removed = myFish.splice(2, 1, 'trumpet'); // myFish is ["angel", "clown", "trumpet", "sturgeon"] // removed is ["drum"]
Remove 2 elements from index 0, and insert "parrot", "anemone" and "blue"
var myFish = ['angel', 'clown', 'trumpet', 'sturgeon']; var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue'); // myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"] // removed is ["angel", "clown"]
Remove 2 elements from index 2
var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon']; var removed = myFish.splice(myFish.length - 3, 2); // myFish is ["parrot", "anemone", "sturgeon"] // removed is ["blue", "trumpet"]
Remove 1 element from index -2
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(-2, 1); // myFish is ["angel", "clown", "sturgeon"] // removed is ["mandarin"]
Remove all elements after index 2 (incl.)
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(2); // myFish is ["angel", "clown"] // removed is ["mandarin", "sturgeon"]
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 3rd Edition (ECMA-262) | Standard | Initial definition. Implemented in 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 |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|---|
Basic support | 1.0 | (Yes) | 1.0 (1.7 or earlier) | (Yes) | 5.5 | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
See also
Document Tags and Contributors
Tags:
Contributors to this page:
stuft2,
srikkant,
zlatinejc,
fasttime,
erikadoyle,
jswisher,
juliahazer,
gouegd,
Aaron-RN,
mohitgarg,
declspec,
wangyiz4262,
hozefaj,
brunofunny,
elyobo,
stelovsky,
iamzozo,
fscholz,
kelvin-yong,
xifengjin88,
darrenburgess,
KurtHarlandLarson,
isaacm,
alexortiz201,
AlexLumo,
nmve,
martuanez,
architchandra,
jercul79,
cnhuang,
Moniarchy,
tnRaro,
Ezard,
xgqfrms-GitHub,
ralleab,
iJianHuang,
David_Gilbertson,
ingvijonasson,
hatched,
eduardoboucas,
Tomino2112,
dbooth-boston,
Egidius,
ramesaliyev,
magnuf,
TMR,
Fenn,
NoahYarian,
Sheppy,
cshung,
deveedutta,
Mingun,
dan-nl,
Tinklern,
alochschmied,
KOLANICH,
bjb568,
jitheshgopan,
ryn830,
Victor_Homyakov,
alalonde,
Huan,
nisargshah95,
tore.erstad,
mattacular,
aerotrink,
enderandpeter,
asselin,
Brettz9,
ytpete,
Ruakh,
ethertank,
Nickolay,
jerry,
DavidWalsh,
Xcelerate,
zirak,
do3cc,
Anuarbek Safiyev,
madarche,
evilpie,
asuth,
SteveB,
Sevenspade,
Mgjbot,
Waldo,
SylvainPasche,
Yuichirou,
Maian,
Dria
Last updated by:
stuft2,