[ Leksykon ] [ JavaScript ] [ Tablice ] [ Metody ] [ Właściwości ] [ Array() ]
Array.prototype.copyWithin()
[_] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] [Z]
copyWithin(target, start)
copyWithin(target, start, end)
Przykłady:
const tablica = ['A', 'B', 'C', 'D', 'E'];
console.log(tablica.copyWithin(0, 3, 4));
// Array ["D", "B", "C", "D", "E"]
console.log(tablica.copyWithin(1, 3));
// Array ["D", "D", "E", "D", "E"]
console.log(tablica.copyWithin(2, 3));
// Array ["D", "D", "D", "E", "E"]
console.log(tablica.copyWithin(3, 1));
// Array ["D", "D", "D", "D", "D"]
const tablica = ['A', 'B', 'C', , 'E'];
console.log(tablica.copyWithin(0, 3, 4));
// Array [undefined, "B", "C", undefined, "E"]
console.log(tablica.copyWithin(1, 3));
// Array [undefined, undefined, "E", undefined, "E"]
console.log(tablica.copyWithin(2, 3));
// Array [undefined, undefined, undefined, "E", "E"]
console.log(tablica.copyWithin(3, 1));
// Array [undefined, undefined, undefined, undefined, undefined]
const tablica = {
length: 10,
0: 1,
1: 2,
2: 3,
3: 4,
4: 5, // usuwa 2, 4 bo skopiowane index 5, 6, 7, 8, 9, 10 nie istnieją są puste
};
console.log(Array.prototype.copyWithin.call(tablica, 0, 3));
// Object { 0: 4, 1: 5, length: 10 }
console.log(Array.prototype.copyWithin.call(tablica, 3, 1));
// Object { 0: 4, 1: 5, 3: 5, length: 10 }
Opis:
Metoda Array.copyWithin() instancji Array płytkich kopiuje część tej tablicy do innego miejsca w tej samej tablicy i zwraca tę tablicę bez modyfikowania jej długości. Parametr pierwszy indeks od zera, do którego należy skopiować sekwencję, przekonwertowany na liczbę całkowitą. Odpowiada to miejscu, do którego element start zostanie skopiowany, a wszystkie elementy pomiędzy start i end zostaną skopiowane do kolejnych indeksów. Indeks ujemny odliczany jest od końca tablicy jeśli target < 0 używany jest target + array.length. Jeśli target < -array.length, 0 jest używane. Jeśli target >= array.length, nic nie jest kopiowane. Jeśli target jest umieszczony po start normalizacji, kopiowanie odbywa się tylko do końca array.length innymi słowy, copyWithin() nigdy nie rozszerza tablicy. Drugi parametr indeks od zera, od którego należy rozpocząć kopiowanie elementów, przekonwertowany na liczbę całkowitą. Indeks ujemny odliczany jest od końca tablicy, jeśli start < 0 używany jest start + array.length. Jeśli start < -array.length, 0 jest używane. Jeśli start >= array.length, nic nie jest kopiowane. Trzeci parametr opcjonalny indeks od zera, od którego ma się zakończyć kopiowanie elementów, przekonwertowany na liczbę całkowitą. Indeks ujemny odliczany jest od końca tablicy,jeśli end < 0 używany jest end + array.length. Jeśli end < -array.length, 0 jest używane. Jeśli end >= array.length lub end zostanie pominięte, array.length zostanie użyte, powodując skopiowanie wszystkich elementów do końca. Jeśli end jest umieszczony przed lub po start normalizacji, nic nie jest kopiowane. Wartość zwracana zmodyfikowana tablica. Metoda copyWithin() jest metodą o wysokiej wydajności do przesuwania danych pliku Array. Dotyczy to szczególnie metody TypedArray.prototype.copyWithin() o tej samej nazwie. Sekwencja jest kopiowana i wklejana jako jedna operacja; wklejona sekwencja będzie miała skopiowane wartości, nawet jeśli obszary kopiowania i wklejania nakładają się. Ponieważ undefined staje się 0 po konwersji na liczbę całkowitą, pominięcie start parametru ma taki sam efekt jak przekazanie 0, które kopiuje całą tablicę do pozycji docelowej, co jest równoznaczne z przesunięciem w prawo, w którym prawa granica jest obcięta, a lewa granica jest powielana. Należy jawnie przekazać 0 start. Metoda ta copyWithin() jest metodą mutującą. Nie zmienia to długości this, ale zmienia zawartość this i tworzy nowe właściwości lub usuwa istniejące właściwości, jeśli to konieczne. Metoda copyWithin() zachowuje puste miejsca. Jeśli region, z którego chcesz skopiować, jest rzadki, odpowiadające nowym indeksom puste miejsca zostaną usunięte i również staną się pustymi miejscami. Metoda copyWithin() jest ogólna. Oczekuje tylko, że this wartość będzie miała length właściwość i właściwości z kluczem całkowitym. Chociaż ciągi znaków są również podobne do tablic, ta metoda nie nadaje się do stosowania na nich, ponieważ ciągi są niezmienne.
Linki: