Signatur
Beschreibung
Die Methode splice() von Array-Instanzen ändert den Inhalt eines Arrays, indem sie bestehende Elemente entfernt oder ersetzt und/oder neue Elemente in place hinzufügt.
Um ein neues Array mit einem entfernten und/oder ersetzten Abschnitt zu erstellen, ohne das ursprüngliche Array zu verändern, verwenden Sie toSpliced(). Um auf einen Teil eines Arrays zuzugreifen, ohne es zu verändern, siehe slice().
Die Methode splice() ist eine mutating method. Sie kann den Inhalt von this verändern. Wenn die angegebene Anzahl einzufügender Elemente von der Anzahl der zu entfernenden Elemente abweicht, wird auch die length des Arrays entsprechend geändert. Gleichzeitig verwendet sie [Symbol.species], um eine neue Array-Instanz zu erzeugen, die zurückgegeben wird.
Wenn der gelöschte Teil sparse ist, ist auch das von splice() zurückgegebene Array sparse, wobei die entsprechenden Indizes leere Slots sind.
Die Methode splice() ist generic. Sie erwartet lediglich, dass der this-Wert eine length-Eigenschaft und ganzzahlig indizierte Eigenschaften besitzt. Obwohl Strings ebenfalls array-ähnlich sind, ist diese Methode nicht geeignet, um auf sie angewendet zu werden, da Strings unveränderlich sind.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $start Pflicht | number | — | Nullbasierter Index, an dem die Änderung des Arrays beginnt, in eine Ganzzahl konvertiert. Ein negativer Index zählt vom Ende des Arrays zurück — wenn -array.length <= start < 0, wird start + array.length verwendet. Wenn start < -array.length, wird 0 verwendet. Wenn start >= array.length, wird kein Element gelöscht, aber die Methode verhält sich wie eine hinzufügende Funktion und fügt so viele Elemente hinzu, wie übergeben wurden. Wenn start weggelassen wird (und splice() ohne Argumente aufgerufen wird), wird nichts gelöscht. Dies unterscheidet sich vom Übergeben von undefined, das zu 0 konvertiert wird. |
| $deleteCount | number | — | Eine Ganzzahl, die die Anzahl der aus dem Array zu entfernenden Elemente ab start angibt. Wenn deleteCount weggelassen wird oder sein Wert größer oder gleich der Anzahl der Elemente nach der durch start angegebenen Position ist, werden alle Elemente von start bis zum Ende des Arrays gelöscht. Wenn Sie jedoch einen itemN-Parameter übergeben möchten, sollten Sie Infinity als deleteCount übergeben, um alle Elemente nach start zu löschen, da ein explizites undefined zu 0 konvertiert wird. Wenn deleteCount 0 oder negativ ist, werden keine Elemente entfernt. In diesem Fall sollten Sie mindestens ein neues Element angeben (siehe unten). |
| $item1, …, itemN | any | — | Die Elemente, die dem Array beginnend bei start hinzugefügt werden sollen. Wenn Sie keine Elemente angeben, entfernt splice() nur Elemente aus dem Array. |
Rückgabewert
Beispiele
0 (null) Elemente vor Index 2 entfernen und "drum" einfügen
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(2, 0, "drum");
// myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"]
// removed is [], no elements removed
0 (null) Elemente vor Index 2 entfernen und "drum" und "guitar" einfügen
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(2, 0, "drum", "guitar");
// myFish is ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
// removed is [], no elements removed
0 (null) Elemente an Index 0 entfernen und "angel" einfügen
const myFish = ["clown", "mandarin", "sturgeon"];
const removed = myFish.splice(0, 0, "angel");
// myFish is ["angel", "clown", "mandarin", "sturgeon"]
// no items removed
0 (null) Elemente am letzten Index entfernen und "sturgeon" einfügen
const myFish = ["angel", "clown", "mandarin"];
const removed = myFish.splice(myFish.length, 0, "sturgeon");
// myFish is ["angel", "clown", "mandarin", "sturgeon"]
// no items removed
1 Element an Index 3 entfernen
const myFish = ["angel", "clown", "drum", "mandarin", "sturgeon"];
const removed = myFish.splice(3, 1);
// myFish is ["angel", "clown", "drum", "sturgeon"]
// removed is ["mandarin"]
1 Element an Index 2 entfernen und "trumpet" einfügen
const myFish = ["angel", "clown", "drum", "sturgeon"];
const removed = myFish.splice(2, 1, "trumpet");
// myFish is ["angel", "clown", "trumpet", "sturgeon"]
// removed is ["drum"]
2 Elemente ab Index 0 entfernen und "parrot", "anemone" und "blue" einfügen
const myFish = ["angel", "clown", "trumpet", "sturgeon"];
const removed = myFish.splice(0, 2, "parrot", "anemone", "blue");
// myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
// removed is ["angel", "clown"]
2 Elemente ab Index 2 entfernen
const myFish = ["parrot", "anemone", "blue", "trumpet", "sturgeon"];
const removed = myFish.splice(2, 2);
// myFish is ["parrot", "anemone", "sturgeon"]
// removed is ["blue", "trumpet"]
1 Element ab Index -2 entfernen
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(-2, 1);
// myFish is ["angel", "clown", "sturgeon"]
// removed is ["mandarin"]
Alle Elemente ab Index 2 entfernen
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(2);
// myFish is ["angel", "clown"]
// removed is ["mandarin", "sturgeon"]
splice() auf sparse Arrays anwenden
const arr = [1, , 3, 4, , 6];
console.log(arr.splice(1, 2)); // [empty, 3]
console.log(arr); // [1, 4, empty, 6]
splice() auf Nicht-Array-Objekten aufrufen
const arrayLike = {
length: 3,
unrelated: "foo",
0: 5,
2: 4,
};
console.log(Array.prototype.splice.call(arrayLike, 0, 1, 2, 3));
// [ 5 ]
console.log(arrayLike);
// { '0': 2, '1': 3, '3': 4, length: 4, unrelated: 'foo' }