Javascript-metoda Array.slice: suptilnosti korištenja

Nizovi u javascript jeziku imaju mnoge specifične korisne metode koje olakšavaju manipulaciju podacima. Neke od tih funkcija mijenjaju izvorni objekt, druge stvaraju modificirane ili točne kopije. Posljednja grupa pripada korisnoj metodi Array.slice (). To vam omogućuje da odaberete iz niza bilo koje podmase i koristite ga zasebno.

Sintaksa metode



array.slice ([begin [, end]])

Kao što možete vidjeti, metoda uzima dva argumenta, ali nijedna od njih nije potrebna izostavljen.

Prvi parametar označava položaj početka željenog submastera, drugi je položaj elementa na kojem će se zaustaviti vađenje. Prema tome, oni moraju predstavljati cijele brojeve.

U odsutnosti argumentakraj , metoda će raditi do kraja izlaznog niza.

U nedostatku oba parametrapolje- jednostavno će se potpuno kopirati.

Funkcija također može prihvatiti negativne argumente, s početkom brojanja položaja na kraju polja.

Razmotrimo rad metodeslice ()na primjeru jednostavnog niza brojeva:

neka arr = [5, 4, 3] 2, 1];

Dobivanje submastera iz prva tri elementa:

console.log (arr.slice (0 3));

Ovdje je prvi argument 0. To određuje funkciju koja se mora pokrenuti iz nulte pozicije. A drugi - 3 kaže da se morate zaustaviti na elementu s indeksom od 3, ne uključujući ga u konačni uzorak. Kao rezultat, na konzoli će biti prikazan niz, uključujući 5 4 i 3.

& lt; skript async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_1 - & gt;

& lt; skripta & gt; (adsbygoogle = window.adsbygoogle || []). push ({});
[thumb] http://hi-news.pp.ua/uploads/posts/2018-06/javascript-metod-arrayslice-tonkosch-vikoristannya_181.jpeg

Dobivanje submastera iz posljednja tri elementa:

console.log (arr.slice (-3));

Da bi se postigao ovaj zadatak, dovoljan je samo jedan argument za početak uzorkovanja. Negativna vrijednost aktivira odbrojavanje od kraja polja. U našem slučaju, to je element s vrijednošću 3. Konačni niz uključuje brojeve 321.

Izračunata vrijednost

Značajka metode javascriptarray.slice() je da ne mijenja objekt u kontekstu u kojem je pozvan. To znači da nakon izvršenja svih operacija, poljeiostaju nepromijenjeni i da ih program može koristiti u druge svrhe.

Funkcija funkcije je stvoriti novi niz koji nije povezan s izlazom i ispuniti ga odabranim elementima. Da bi se ovaj niz koristio kasnije, on mora biti napisan u varijabli.

& lt; skript async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_2 - & gt;

& lt; skripta & gt; (adsbygoogle = window.adsbygoogle || []). push ({});
neka arr = [5, 4, 3, 2, 1];
neka newArr = arr.slice ;

console.log (newArr); //[4, 3, 2]
console.log (arr); //[5, 4, 3, 2, 1]

Iz primjera se može vidjeti da je objektarrostao nepromijenjen. Rezultat metode bio je novi niznewArr .

http://hi-news.pp.ua/uploads/posts/2018-06/javascript-metod-arrayslice-tonkosch-vikoristannya_292.jpeg

Kopirni nizovi

Ovaj mehanizam omogućuje automatsko stvaranje kopija bez ručnog odabira svakog elementa niza.

neka klon = arr.slice (); 
console.log (klon); //[5, 4, 3, 2, 1]

Pozivanje metode bez argumenata započinje kopiranjem s početka i kraja poljai . Nastali klon je potpuno neovisan od izvora i omogućuje vam manipuliranje podacima bez straha da ćete ih zauvijek izgubiti.

klon
++;
console.log (klon); //[5, 4, 2, 1]
console.log (arr); //[5, 4, 3, 2, 1]

Ovdje je važno upamtiti da se JavaScript objekti prenose referencom. Prema tome, ako su elementi sekvence objekti, tada će njihova promjena u kopiji rezultirati istom promjenom izvornog koda.

neka je arr = [
{a: 1},
[2,3]
];

//kopira izlazni niz
neka newArr = arr.slice ();
console.log (newArr); //[{a: 1}, [2, 3]]

//promijeni kopiju
newArr.a = 7;
console.log (newArr); //[{a: 7}, [2, 3]]

//izlazni niz je također promijenjen
console.log (arr); //[{a: 7}, [2, 3]]


Bez straha moguće je raditi s vrijednostima redaka, brojeva i logičkih operatora, budući da su potpuno kopirane u novi slijed. Istovremeno dodavanje i uklanjanje stavki unutar kloniranog niza ne utječe na izlaz.

Povezane publikacije