Die splice() Methode ändert den Inhalt eines Arrays durch das Hinzufügen neuer und/oder Entfernen alter Elemente.
Syntax
array.splice(index, deleteCount[, element1[,element2[, ...]]])
Parameter
index- Index ab welchem das Array geändert werden soll. Wenn der Index größer als die Länge des Arrays ist, wird der Index auf die Länge des Arrays gesetzt. Falls der Index negativ ist, beginnt die Änderung entsprechend viele Stellen rückwärts vom Ende des Arrays.
deleteCount- Anzahl wie viele alte Array Elemente entfernt werden sollen. Falls
deleteCount0 ist, werden keine Elemente entfernt. In diesem Fall sollte man mindestens ein neues Element übergeben. FallsdeleteCountgrößer ist als die Anzahl Elemente die in dem Array übrig bleiben, beginnend abindex, dann werden alle Elemente bis zum Ende des Arrays entfernt. - Falls kein
deleteCountParameter spezifiziert wird (SpiderMonkey Erweiterung) werden alle Elemente abindexentfernt. element1, element2, ...- Die Elemente, die dem Array hinzugefügt werden sollen. Falls keine Elemente angegeben werden, entfernt
spliceeinfach Elemente des Arrays.
Rückgabewert
Ein Array, welches die entfernten Elemente beinhaltet. Falls nur ein Element entfernt wurde, wird dennoch ein Array mit nur einem Element zurückgegeben. Falls keine Elemente entfernt werden wird ein leeres Array zurückgegeben.
Beschreibung
Falls die Anzahl neuer Elemente ungleich der Anzahl entfernter Elemente ist wird die Länge des Arrays geändert.
Beispiele
Zur Benutzung von splice
Das folgende Script zeigt die Benutzung von 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 // removes 1 element from index 3 removed = myFish.splice(3, 1); // myFish is ['angel', 'clown', 'drum', 'surgeon'] // removed is ['mandarin'] // removes 1 element from index 2, and inserts 'trumpet' removed = myFish.splice(2, 1, 'trumpet'); // myFish is ['angel', 'clown', 'trumpet', 'surgeon'] // removed is ['drum'] // 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'] // removes 2 elements from index 3 removed = myFish.splice(3, myFish.length); // myFish is ['parrot', 'anemone', 'blue'] // removed is ['trumpet', 'surgeon']
Spezifikation
| Spezifikation | Status | Kommenter |
|---|---|---|
| ECMAScript 3rd Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.2. |
| ECMAScript 5.1 (ECMA-262) Die Definition von 'Array.prototype.splice' in dieser Spezifikation. |
Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) Die Definition von 'Array.prototype.splice' in dieser Spezifikation. |
Standard | |
| ECMAScript Latest Draft (ECMA-262) Die Definition von 'Array.prototype.splice' in dieser Spezifikation. |
Entwurf |
Browserkompatibilität
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | 1.0 | 1.0 (1.7 oder früher) | 5.5 | (Ja) | (Ja) |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |
Abwärtskompatibilität
In JavaScript 1.2 gibt die splice Methode nur das entfernte Element zurück, wenn nur ein Element entfernt wurde (deleteCount Parameter ist 1); Ansonsten gibt die Methode wie oben beschrieben ein Array zurück.
Hinweis: Der letzte Browser welcher JavaScript 1.2 nutzte war Netscape Navigator 4, also kann man davon ausgehen, dass splice immer ein Array zurückgibt. Das ist der Fall, wenn ein JavaScript Objekt eine length Eigenschaft und eine splice Methode hat, console.log() behandelt es als arrayähnliches Objekt. Die Prüfung mit instanceof Array gibt false zurück.