Podsumowanie
Wydobywa fragment tablicy i zwraca go jako nową tablicę.
Składnia
arr.slice([begin[, end]])
Parametry
begin
- Indeks (liczony od zera) od którego zaczyna się wydobywanie.
- Jeżeli indeks jest ujemny,
begin
wskazuje przesunięcie w kolejności od końca.slice(-2)
wydobywa kolejno drugi od końca i ostatni element tablicy.
end
- Indeks (liczony od zera) przed którym kończy się wydobywanie.
slice
wydobywa elementy jednakże nie zawieraend
.
slice(1,4)
wydobywa elementy od drugiego do czwartego (o indeksach 1, 2 i 3).
- Jeżeli parametr ten ma wartość ujemną to
end
określa odległość od końca tablicy.slice(2,-1)
wydobywa kolejne elementy od trzeciego do przedostatniego.
- Jeżeli
end
jest pominięty,slice
wydobywa wszystkie elementy do końca tablicy.
Opis
slice
nie zmienia zawartości oryginalnej tablicy, tylko zwraca nową kopię "o jednym poziomie głębokości" zawierającą elementy wyciągnięte z oryginalnej tablicy. Elementy oryginalnej tablicy są kopiowane do nowej tablicy następująco:
- W przypadku referencji do obiektów (nie obiektów właściwych),
slice
kopiuje referencje do nowej tablicy. Obydwie - oryginalna i nowa tablica - odnoszą się do tego samego obiektu. Jeżeli zmienimy obiekt odniesienia, zmiany są widoczne dla obydwu tablic, nowej i oryginalnej.
- Dla łańcuchów znaków i liczb (nie będących obiektami
String
iNumber
,slice
kopiuje łańcuchy znaków i liczby do nowej tablicy. Zmiana łańcucha znaków lub liczby w jednej z tablic nie wpływa na wartość w drugiej.
Jeżeli nowy element jest dodany do jednej z tablic, to nie wpływa to w żaden sposób na drugą.
Przykłady
Przykład: Zastosowanie slice
W następującym przykładzie slice
tworzy nową tablicę newCar
z myCar
. Obydwie zawierają odniesienie do obiektu myHonda
. Kiedy kolor myHonda
jest zmieniany na purpurowy, to obie tablice odzwierciedlają zmianę.
//Użycie slice, tworzenie newCar z myCar. var myHonda = { color: "red", wheels: 4, engine: { cylinders: 4, size: 2.2 } }; var myCar = [myHonda, 2, "cherry condition", "purchased 1997"]; var newCar = myCar.slice(0, 2); //Wpisz wartości myCar, newCar i color myHonda // referenced from both arrays. console.log("myCar = " + myCar.toSource()); console.log("newCar = " + newCar.toSource()); console.log("myCar[0].color = " + myCar[0].color); console.log("newCar[0].color = " + newCar[0].color); //zmienia kolor myHonda. myHonda.color = "purple"; console.log("Nowy kolor mojej Honda to " + myHonda.color); //Wpisz color myHonda odnoszący się do oby tablic console.log("myCar[0].color = " + myCar[0].color); console.log("newCar[0].color = " + newCar[0].color);
Ten skrypt wypisze:
myCar = [{color:"red", wheels:4, engine:{cylinders:4, size:2.2}}, 2, "cherry condition", "purchased 1997"] newCar = [{color:"red", wheels:4, engine:{cylinders:4, size:2.2}}, 2] myCar[0].color = red newCar[0].color = red Nowym kolorem mojej Honda jest purpurowy myCar[0].color = purple newCar[0].color = purple