El mètode splice()
modifica el contingut d'un array eliminant elements ja existents i/o afegint-ne de nous.
Sintaxi
array.splice(inici, contadorEliminar[, item1[, item2[, ...]]])
Paràmetres
inici
- La posició a partir de la qual es començarà a modificar l'array (considerant 0 com a primera posició). Si s'especifca un nombre major que la longitud de l'array, la posició d'inici real esdevindrà la longitud de l'array. Si s'especifica un nombre negatiu, la posició d'inici serà el valor absolut del nombre especificat contant des del final de l'array.
contadorEliminar
- Un nombre sencer que indica el nombre d'elements que s'eliminaran. Si
contadorEliminar
és 0 no s'eliminarà cap element. En aquest cas s'hauria d'especificar al menys un nou element. SicontadorEliminar
és major que el nombre d'elements de l'array des de la posicióinici
fins el final de l'array tots els elements des d'inici
fins al final de l'array seran eliminats. - Si s'omet
contadorEliminar
aquest rebrà un valor per defecte igual a (arr.length - inici
).
item1, item2, ...
- Els elements que s'afegiran a l'array, començant a la posició
inici
. Si no s'especifcia cap element,splice()
només eliminarà elements de l'array.
Valor retornat
Un array que conté els elements eliminats. Si només s'ha eliminat un element es retornarà un array amb un sol element. Si no s'ha eliminat cap element retornarà un array buit.
Descripció
Si s'especifica un nombre diferent d'elements a eliminar del nombre d'elements a inserir la longitud de l'array canviarà al final de la crida.
Exemples
Utilitzar splice()
L'script seguent ilustra l'ús de splice()
:
var myFish = ['angel', 'clown', 'mandarin', 'surgeon']; // eliminem 0 elements a partir de la posició 2, i inserim 'drum' var eliminats = myFish.splice(2, 0, 'drum'); // myFish is ['angel', 'clown', 'drum', 'mandarin', 'surgeon'] // eliminats va [], no s'han eliminat elements // myFish val ['angel', 'clown', 'drum', 'mandarin', 'surgeon'] // eliminem 1 element a la posició 3 eliminats = myFish.splice(3, 1); // myFish val ['angel', 'clown', 'drum', 'surgeon'] // eliminats val ['mandarin'] // myFish val ['angel', 'clown', 'drum', 'surgeon'] // Eliminem 1 element a la posició 2, i inserim 'trumpet' eliminats = myFish.splice(2, 1, 'trumpet'); // myFish val ['angel', 'clown', 'trumpet', 'surgeon'] // eliminats val ['drum'] // myFish val ['angel', 'clown', 'trumpet', 'surgeon'] // eliminem 2 elements de la posició 0, i inserim 'parrot', 'anemone' i 'blue' eliminats = myFish.splice(0, 2, 'parrot', 'anemone', 'blue'); // myFish val ['parrot', 'anemone', 'blue', 'trumpet', 'surgeon'] // eliminats val ['angel', 'clown'] // myFish val ['parrot', 'anemone', 'blue', 'trumpet', 'surgeon'] // eliminem 2 elements de la posició 3 eliminats = myFish.splice(myFish.length -3, 2); // myFish val ['parrot', 'anemone', 'surgeon'] // eliminats val ['blue', 'trumpet']
Especificacions
Especificació | Estat | Comentaris |
---|---|---|
ECMAScript 3rd Edition (ECMA-262) | Standard | Definició inicial. Implementat a 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 |
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | 1.0 | 1.0 (1.7 or earlier) | 5.5 | (Yes) | (Yes) |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Compatibilitat amb versions anteriors
A JavaScript 1.2 el mètode splice()
retornava l'element eliminat si només s'havia eliminat un sol element (és a dir, si el valor del paràmetre contadorEliminar
era 1); en qualsevol altre cas retornava un array contenit els elements eliminats.
Nota: L'últim navegador en utilitzar JavaScript 1.2 va ser el Netscape Navigator 4, així que podeu asumir que splice()
sempre retornarà un array. Aquest és el cas quan un objecte JavaScript disposa de la propietat length
i un mètode splice()
,console.log()
el tracta com si fós un objecte array. Comprovar-ho amb instanceof Array
retornarà false.