Array.prototype.toSpliced()
Baseline 2023
Newly available
Since July 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Die toSpliced()
-Methode von Array
-Instanzen ist die kopierende Version der splice()
-Methode. Sie gibt ein neues Array zurück, bei dem einige Elemente an einem bestimmten Index entfernt und/oder ersetzt werden.
Syntax
toSpliced(start)
toSpliced(start, deleteCount)
toSpliced(start, deleteCount, item1)
toSpliced(start, deleteCount, item1, item2)
toSpliced(start, deleteCount, item1, item2, /* …, */ itemN)
Parameter
start
-
Nullbasierter Index, ab dem das Array geändert wird, in eine Ganzzahl umgewandelt.
- Ein negativer Index zählt rückwärts vom Ende des Arrays — wenn
-array.length <= start < 0
, wirdstart + array.length
verwendet. - Wenn
start < -array.length
oderstart
weggelassen wird, wird0
verwendet. - Wenn
start >= array.length
, wird kein Element gelöscht, aber die Methode verhält sich wie eine Hinzufügen-Funktion, die so viele Elemente hinzufügt, wie bereitgestellt werden.
- Ein negativer Index zählt rückwärts vom Ende des Arrays — wenn
deleteCount
Optional-
Eine Ganzzahl, die die Anzahl der Elemente im Array angibt, die ab
start
entfernt werden sollen.Wenn
deleteCount
weggelassen wird oder sein Wert größer oder gleich der Anzahl der Elemente nach der durchstart
angegebenen Position ist, werden alle Elemente vonstart
bis zum Ende des Arrays gelöscht. Wenn Sie jedoch einenitemN
-Parameter übergeben möchten, sollten SieInfinity
alsdeleteCount
übergeben, um alle Elemente nachstart
zu löschen, da ein explizitesundefined
in0
umgewandelt 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
Optional-
Die Elemente, die zum Array ab
start
hinzugefügt werden sollen.Wenn Sie keine Elemente angeben, wird
toSpliced()
nur Elemente aus dem Array entfernen.
Rückgabewert
Ein neues Array, das aus allen Elementen vor start
, item1
, item2
, …, itemN
und allen Elementen nach start + deleteCount
besteht.
Beschreibung
Die toSpliced()
-Methode entfernt wie splice()
mehrere Elemente gleichzeitig: Sie entfernt die gegebene Anzahl von Elementen aus dem Array, beginnend an einem bestimmten Index, und fügt dann die angegebenen Elemente am selben Index hinzu. Allerdings gibt sie ein neues Array zurück, anstatt das ursprüngliche Array zu ändern. Die gelöschten Elemente werden daher von dieser Methode nicht zurückgegeben.
Die toSpliced()
-Methode erzeugt niemals ein spärliches Array. Wenn das Quellarray spärlich ist, werden die leeren Plätze im neuen Array durch undefined
ersetzt.
Die toSpliced()
-Methode ist generisch. Sie erwartet nur, dass der this
-Wert eine length
-Eigenschaft und integer-gekennzeichnete Eigenschaften hat.
Beispiele
Löschen, Hinzufügen und Ersetzen von Elementen
Sie können toSpliced()
verwenden, um Elemente in einem Array zu löschen, hinzuzufügen und zu ersetzen und ein neues Array effizienter als mit slice()
und concat()
zu erstellen.
const months = ["Jan", "Mar", "Apr", "May"];
// Inserting an element at index 1
const months2 = months.toSpliced(1, 0, "Feb");
console.log(months2); // ["Jan", "Feb", "Mar", "Apr", "May"]
// Deleting two elements starting from index 2
const months3 = months2.toSpliced(2, 2);
console.log(months3); // ["Jan", "Feb", "May"]
// Replacing one element at index 1 with two new elements
const months4 = months3.toSpliced(1, 1, "Feb", "Mar");
console.log(months4); // ["Jan", "Feb", "Mar", "May"]
// Original array is not modified
console.log(months); // ["Jan", "Mar", "Apr", "May"]
Verwendung von toSpliced()
auf spärlichen Arrays
Die toSpliced()
-Methode erzeugt immer ein dichtes Array.
const arr = [1, , 3, 4, , 6];
console.log(arr.toSpliced(1, 2)); // [1, 4, undefined, 6]
Aufrufen von toSpliced()
auf Nicht-Array-Objekten
Die toSpliced()
-Methode liest die length
-Eigenschaft von this
. Sie liest dann die benötigten integer-gekennzeichneten Eigenschaften und schreibt sie in das neue Array.
const arrayLike = {
length: 3,
unrelated: "foo",
0: 5,
2: 4,
};
console.log(Array.prototype.toSpliced.call(arrayLike, 0, 1, 2, 3));
// [2, 3, undefined, 4]
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-array.prototype.tospliced |
Browser-Kompatibilität
BCD tables only load in the browser