Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Array.prototype.copyWithin()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
DiecopyWithin() Methode vonArray Instanzen kopiert flach einen Teil dieses Arrays an eine andere Stelle im selben Array und gibt dieses Array zurück, ohne seine Länge zu ändern.
In diesem Artikel
Probieren Sie es aus
const array = ["a", "b", "c", "d", "e"];// Copy to index 0 the element at index 3console.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 endconsole.log(array.copyWithin(1, 3));// Expected output: Array ["d", "d", "e", "d", "e"]Syntax
copyWithin(target, start)copyWithin(target, start, end)Parameter
targetNullbasierter Index, an dem die Sequenz hingekopiert werden soll,in eine ganze Zahl umgewandelt. Dies entspricht der Stelle, an die das Element bei
startkopiert wird, und alle Elemente zwischenstartundendwerden an aufsteigende Indizes kopiert.- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
-array.length <= target < 0, wirdtarget + array.lengthverwendet. - Wenn
target < -array.length, wird0verwendet. - Wenn
target >= array.length, wird nichts kopiert. - Wenn
targetnach der Normalisierung hinterstartpositioniert ist, erfolgt das Kopieren nur bis zum Ende vonarray.length(in anderen Worten,copyWithin()erweitert das Array nie).
- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
startNullbasierter Index, ab dem Elemente kopiert werden,in eine ganze Zahl umgewandelt.
- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
-array.length <= start < 0, wirdstart + array.lengthverwendet. - Wenn
start < -array.length, wird0verwendet. - Wenn
start >= array.length, wird nichts kopiert.
- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
endOptionalNullbasierter Index, an dem das Kopieren der Elemente endet,in eine ganze Zahl umgewandelt.
copyWithin()kopiert bis zu, aber nicht einschließlichend.- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
-array.length <= end < 0, wirdend + array.lengthverwendet. - Wenn
end < -array.length, wird0verwendet. - Wenn
end >= array.lengthoderendweggelassen oderundefinedist, wirdarray.lengthverwendet, wodurch alle Elemente bis zum Ende kopiert werden. - Wenn
endeine Position vor oder an der Stelle bedeutet, diestartanzeigt, wird nichts kopiert.
- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
Rückgabewert
Das modifizierte Array.
Beschreibung
DiecopyWithin() Methode arbeitet wiememmove in C und C++ und ist eine leistungsstarke Methode, um die Daten einesArray zu verschieben. Dies gilt insbesondere für dieTypedArray Methode mit demselben Namen. Die Sequenz wird in einem Vorgang kopiert und eingefügt; die eingefügte Sequenz wird die kopierten Werte haben, selbst wenn sich die Kopier- und Einfügebereiche überlappen.
Daundefined bei der Umwandlung in eine ganze Zahl zu0 wird, hat das Weglassen desstart Parameters denselben Effekt wie das Übergeben von0, 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 Sie0 ausdrücklich alsstart übergeben.
console.log([1, 2, 3, 4, 5].copyWithin(2));// [1, 2, 1, 2, 3]; move all elements to the right by 2 positionsDiecopyWithin() Methode ist einemutierende Methode. Sie verändert nicht die Länge vonthis, aber sie ändert den Inhalt vonthis und erstellt bei Bedarf neue Eigenschaften oder löscht vorhandene Eigenschaften.
DiecopyWithin() Methode bewahrt leere Plätze. Wenn der zu kopierende Bereichspärlich ist, werden die entsprechenden neuen Indizes der leeren Plätzegelöscht und ebenfalls zu leeren Plätzen.
DiecopyWithin() Methode istgenerisch. Sie erwartet nur, dass derthis Wert einelength Eigenschaft und integer-gekürzte Eigenschaften besitzt. Obwohl Zeichenfolgen ebenfalls array-ähnlich sind, eignet sich diese Methode nicht dafür, auf sie angewendet zu werden, da Zeichenfolgen unveränderlich sind.
Beispiele
>Verwendung von copyWithin()
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 spärlichen Arrays
copyWithin() wird leere Plätze propagieren.
console.log([1, , 3].copyWithin(2, 1, 2)); // [1, empty, empty]Aufruf von copyWithin() auf Nicht-Array-Objekten
DiecopyWithin() Methode liest dielength Eigenschaft vonthis und bearbeitet dann die beteiligten integer-Indices.
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 slotSpezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.copywithin> |