Array.prototype.with()

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 with() Methode von Array Instanzen ist die kopierende Version der Verwendung der Klammernotation, um den Wert eines bestimmten Index zu ändern. Sie gibt ein neues Array zurück, bei dem das Element am angegebenen Index durch den angegebenen Wert ersetzt wird.

Syntax

js
arrayInstance.with(index, value)

Parameter

index

Nullbasierter Index, an dem das Array geändert werden soll, umgewandelt in eine ganze Zahl.

  • Ein negativer Index zählt rückwärts vom Ende des Arrays — wenn -array.length <= index < 0, wird index + array.length verwendet.
  • Wenn der Index nach der Normalisierung außerhalb der Grenzen liegt, wird ein RangeError ausgelöst.
value

Jeder Wert, der dem angegebenen Index zugewiesen werden soll.

Rückgabewert

Ein neues Array, bei dem das Element an index durch value ersetzt wurde.

Ausnahmen

RangeError

Wird ausgelöst, wenn index >= array.length oder index < -array.length.

Beschreibung

Die with() Methode ändert den Wert eines bestimmten Indexes im Array und gibt ein neues Array zurück, bei dem das Element am angegebenen Index durch den angegebenen Wert ersetzt wird. Das ursprüngliche Array wird nicht verändert. Dies ermöglicht das Verketten von Array-Methoden während der Manipulationen.

Durch die Kombination von with() mit at(), können Sie ein Array sowohl mit negativen Indizes schreiben als auch lesen.

Die with() Methode erzeugt niemals ein dünn besetztes Array. Wenn das Quellarray dünn besetzt ist, werden die leeren Plätze im neuen Array durch undefined ersetzt.

Die with() Methode ist generisch. Sie erwartet nur, dass der this-Wert eine length-Eigenschaft und ganzzahlige Schlüssel-Eigenschaften hat.

Beispiele

Erstellen eines neuen Arrays mit einem einzelnen geänderten Element

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]

Verkettung von Array-Methoden

Mit der with() Methode können Sie ein einzelnes Element in einem Array aktualisieren und dann andere 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]

Verwendung von with() auf dünn besetzten Arrays

Die with() Methode erzeugt immer ein dicht besetztes Array.

js
const arr = [1, , 3, 4, , 6];
console.log(arr.with(0, 2)); // [2, undefined, 3, 4, undefined, 6]

Aufruf von with() auf Nicht-Array-Objekten

Die with() Methode erstellt und gibt ein neues Array zurück. Sie liest die length-Eigenschaft von this und greift dann auf jede Eigenschaft zu, deren Schlüssel eine nicht negative ganze Zahl kleiner als length ist. Während auf jede Eigenschaft von this zugegriffen wird, wird das Array-Element mit einem Index, der dem Schlüssel der Eigenschaft entspricht, auf den Wert der Eigenschaft gesetzt. Schließlich wird der Array-Wert bei 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

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.with

Browser-Kompatibilität

Siehe auch