Array.prototype.with()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2023 browserübergreifend verfügbar.
Die Methode with() von Array-Instanzen ist die kopierende Variante der Klammernotation zum Ändern des Werts an einem bestimmten Index. Sie gibt ein neues Array zurück, in dem das Element am angegebenen Index durch den angegebenen Wert ersetzt wurde.
Syntax
arrayInstance.with(index, value)
Parameter
index-
Nullbasierter Index, an dem das Array geändert werden soll; er wird in eine Ganzzahl umgewandelt.
- Ein negativer Index zählt vom Ende des Arrays zurück. Wenn
-array.length <= index < 0gilt, wirdindex + array.lengthverwendet. - Liegt der Index nach der Normalisierung außerhalb der Array-Grenzen, wird ein
RangeErrorausgelöst.
- Ein negativer Index zählt vom Ende des Arrays zurück. Wenn
value-
Beliebiger Wert, der dem angegebenen Index zugewiesen werden soll.
Rückgabewert
Ein neues Array, in dem das Element an index durch value ersetzt wurde.
Ausnahmen
RangeError-
Wird ausgelöst, wenn
index >= array.lengthoderindex < -array.lengthgilt.
Beschreibung
Die Methode with() ändert den Wert an einem bestimmten Index im Array und gibt ein neues Array zurück, in dem das Element an diesem Index durch den angegebenen Wert ersetzt wurde. Das ursprüngliche Array wird nicht verändert. Dadurch können Sie Array-Methoden verketten und dabei Änderungen vornehmen.
Wenn Sie with() mit at() kombinieren, können Sie mit negativen Indizes in ein Array schreiben beziehungsweise daraus lesen.
Die Methode with() erzeugt niemals ein Array mit Lücken. Wenn das Quell-Array Lücken enthält, werden die leeren Plätze im neuen Array durch undefined ersetzt.
Die Methode with() ist generisch. Sie setzt lediglich voraus, dass der this-Wert eine length-Eigenschaft und Eigenschaften mit ganzzahligen Schlüsseln besitzt.
Beispiele
>Ein neues Array mit einem geänderten Element erstellen
const arr = [1, 2, 3, 4, 5];
console.log(arr.with(2, 6)); // [1, 2, 6, 4, 5]
console.log(arr); // [1, 2, 3, 4, 5]
Array-Methoden verketten
Mit der Methode with() können Sie ein einzelnes Element in einem Array aktualisieren und anschließend weitere Array-Methoden anwenden.
const arr = [1, 2, 3, 4, 5];
console.log(arr.with(2, 6).map((x) => x ** 2)); // [1, 4, 36, 16, 25]
with() bei Arrays mit Lücken verwenden
Die Methode with() erstellt immer ein Array ohne Lücken.
const arr = [1, , 3, 4, , 6];
console.log(arr.with(0, 2)); // [2, undefined, 3, 4, undefined, 6]
with() für Objekte aufrufen, die keine Arrays sind
Die Methode with() erstellt ein neues Array und gibt es zurück. Sie liest die length-Eigenschaft von this und greift dann auf jede Eigenschaft zu, deren Schlüssel eine nicht negative Ganzzahl kleiner als length ist. Bei jedem Zugriff auf eine Eigenschaft von this wird das Array-Element, dessen Index dem Eigenschaftsschlüssel entspricht, auf den Wert der Eigenschaft gesetzt. Abschließend wird der Wert des Arrays an index auf value gesetzt.
const arrayLike = {
length: 3,
unrelated: "foo",
0: 5,
2: 4,
3: 3, // ignored by with() since length is 3
};
console.log(Array.prototype.with.call(arrayLike, 0, 1));
// [ 1, undefined, 4 ]
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.with> |