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

js
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, wird start + array.length verwendet.
  • Wenn start < -array.length oder start weggelassen wird, wird 0 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.
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 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 in 0 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.

js
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.

js
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.

js
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

Siehe auch