Array.prototype.splice()

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. Si contadorEliminar é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.

Vegeu també

  • push() / pop() — afegir/eliminar elements del final d'un array
  • unshift() / shift() — afegir/eliminar elements de l'inici d'un array
  • concat() — retorna un nou array format a partir d'aquest array i d'altres array(s) i/o valor(s)

Document Tags and Contributors

 Contributors to this page: enTropy
 Last updated by: enTropy,