Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
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 < 0 gilt, wird index + array.length verwendet.
  • Liegt der Index nach der Normalisierung außerhalb der Array-Grenzen, wird ein RangeError ausgelöst.
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.length oder index < -array.length gilt.

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

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

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

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

js
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

Browser-Kompatibilität

Siehe auch