[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin [Back]  [Original]

Array.prototype.copyWithin() - JavaScript | MDN

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.copyWithin()

Baseline
Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit September 2015 browserbergreifend verfgbar.

Die copyWithin() Methode von Array Instanzen kopiert flach einen Teil dieses Arrays an eine andere Stelle im selben Array und gibt dieses Array zurck, ohne seine Lnge zu ndern.

In diesem Artikel

Probieren Sie es aus

const array = ["a", "b", "c", "d", "e"];

// Copy to index 0 the element at index 3
console.log(array.copyWithin(0, 3, 4));
// Expected output: Array ["d", "b", "c", "d", "e"]

// Copy to index 1 all elements from index 3 to the end
console.log(array.copyWithin(1, 3));
// Expected output: Array ["d", "d", "e", "d", "e"]

Syntax

js
copyWithin(target, start)
copyWithin(target, start, end)

Parameter

target

Nullbasierter Index, an dem die Sequenz hingekopiert werden soll, in eine ganze Zahl umgewandelt. Dies entspricht der Stelle, an die das Element bei start kopiert wird, und alle Elemente zwischen start und end werden an aufsteigende Indizes kopiert.

  • Ein negativer Index zhlt vom Ende des Arrays zurck wenn -array.length <= target < 0, wird target + array.length verwendet.
  • Wenn target < -array.length, wird 0 verwendet.
  • Wenn target >= array.length, wird nichts kopiert.
  • Wenn target nach der Normalisierung hinter start positioniert ist, erfolgt das Kopieren nur bis zum Ende von array.length (in anderen Worten, copyWithin() erweitert das Array nie).
start

Nullbasierter Index, ab dem Elemente kopiert werden, in eine ganze Zahl umgewandelt.

  • Ein negativer Index zhlt vom Ende des Arrays zurck wenn -array.length <= start < 0, wird start + array.length verwendet.
  • Wenn start < -array.length, wird 0 verwendet.
  • Wenn start >= array.length, wird nichts kopiert.
end Optional

Nullbasierter Index, an dem das Kopieren der Elemente endet, in eine ganze Zahl umgewandelt. copyWithin() kopiert bis zu, aber nicht einschlielich end.

  • Ein negativer Index zhlt vom Ende des Arrays zurck wenn -array.length <= end < 0, wird end + array.length verwendet.
  • Wenn end < -array.length, wird 0 verwendet.
  • Wenn end >= array.length oder end weggelassen oder undefined ist, wird array.length verwendet, wodurch alle Elemente bis zum Ende kopiert werden.
  • Wenn end eine Position vor oder an der Stelle bedeutet, die start anzeigt, wird nichts kopiert.

Rckgabewert

Das modifizierte Array.

Beschreibung

Die copyWithin() Methode arbeitet wie memmove in C und C++ und ist eine leistungsstarke Methode, um die Daten eines Array zu verschieben. Dies gilt insbesondere fr die TypedArray Methode mit demselben Namen. Die Sequenz wird in einem Vorgang kopiert und eingefgt; die eingefgte Sequenz wird die kopierten Werte haben, selbst wenn sich die Kopier- und Einfgebereiche berlappen.

Da undefined bei der Umwandlung in eine ganze Zahl zu 0 wird, hat das Weglassen des start Parameters denselben Effekt wie das bergeben von 0, was das gesamte Array an die Zielposition kopiert, entsprechend einem Rechtsverschieben, wobei die rechte Grenze abgeschnitten und die linke Grenze dupliziert wird. Dieses Verhalten kann Leser Ihres Codes verwirren, daher sollten Sie 0 ausdrcklich als start bergeben.

js
console.log([1, 2, 3, 4, 5].copyWithin(2));
// [1, 2, 1, 2, 3]; move all elements to the right by 2 positions

Die copyWithin() Methode ist eine mutierende Methode. Sie verndert nicht die Lnge von this, aber sie ndert den Inhalt von this und erstellt bei Bedarf neue Eigenschaften oder lscht vorhandene Eigenschaften.

Die copyWithin() Methode bewahrt leere Pltze. Wenn der zu kopierende Bereich sprlich ist, werden die entsprechenden neuen Indizes der leeren Pltze gelscht und ebenfalls zu leeren Pltzen.

Die copyWithin() Methode ist generisch. Sie erwartet nur, dass der this Wert eine length Eigenschaft und integer-gekrzte Eigenschaften besitzt. Obwohl Zeichenfolgen ebenfalls array-hnlich sind, eignet sich diese Methode nicht dafr, auf sie angewendet zu werden, da Zeichenfolgen unvernderlich sind.

Beispiele

Verwendung von copyWithin()

js
console.log([1, 2, 3, 4, 5].copyWithin(0, 3));
// [4, 5, 3, 4, 5]

console.log([1, 2, 3, 4, 5].copyWithin(0, 3, 4));
// [4, 2, 3, 4, 5]

console.log([1, 2, 3, 4, 5].copyWithin(-2, -3, -1));
// [1, 2, 3, 3, 4]

Verwendung von copyWithin() auf sprlichen Arrays

copyWithin() wird leere Pltze propagieren.

js
console.log([1, , 3].copyWithin(2, 1, 2)); // [1, empty, empty]

Aufruf von copyWithin() auf Nicht-Array-Objekten

Die copyWithin() Methode liest die length Eigenschaft von this und bearbeitet dann die beteiligten integer-Indices.

js
const arrayLike = {
  length: 5,
  3: 1,
};
console.log(Array.prototype.copyWithin.call(arrayLike, 0, 3));
// { '0': 1, '3': 1, length: 5 }
console.log(Array.prototype.copyWithin.call(arrayLike, 3, 1));
// { '0': 1, length: 5 }
// The '3' property is deleted because the copied source is an empty slot

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-array.prototype.copywithin

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page