V JavaScripte sú viacrozmerné polia poliami polí. Ak chcete získať prístup k prvku, povedzme, dvojrozmerného poľa, musíte operátor zadať dvakrát.

Predpokladajme, že premenná matica je pole polí celých čísel. Každý z prvkov matice[j] je pole čísel. Na označenie jedného čísla používame zápis: matica[j][k].

Príklad. Na vytvorenie tabuľky násobenia používame dvojrozmerné pole.

var matrix = new Array(10); // v matici je 10 riadkov

for(var j = 0; j< matrix.length; j++)

matica[j] = new Array(10); //d každý riadok vytvoril 10 stĺpcov

for(var riadok = 0; riadok< matrix.length; row++) {

for(col = 0; col< matrix .length; col++) {

matica = riadok*stĺpec; // vyplnenie prvkov poľa

var vysledok = matica ; // výsledok násobenia 24

Typickým použitím dvojrozmerného poľa v JavaScripte je vytvorenie radu vlastných možností ponuky. Povedzme, že niektoré možnosti hlavnej ponuky zodpovedajú možnostiam rozbaľovacej podponuky. Vytvorme pole, ktorého dĺžka zodpovedá počtu možností hlavného menu. Prvky tohto poľa budú polia názvov možností ich príslušných podmenu.

menu = new Array();

menu = nové pole ("Možnosť 1.1", "Možnosť 1.2", ", "Možnosť 1.3");

menu = nové pole ("Možnosť 2.1", "Možnosť 2 . 2");

menu = new Array("Možnosť 3.1", "Možnosť 3.2", "Možnosť 3.3", "Možnosť 3.4");

Pre prístup k 1. možnosti 2. podmenu musíte napísať:

menu // hodnota je "Možnosť 2.1";

Zmeňme konštrukciu poľa tak, aby obsahovalo názvy možností hlavnej ponuky aj možnosti podponuky:

menu = new Array()

menu = new Array("Menu1", "Menu2", "Menu3");

menu = new Array();

menu = new Array("Možnosť 1.1", "Možnosť 1.2", "Možnosť 1.3");

menu = nové pole ("Možnosť 2.1", "Možnosť 2. 2");

menu = nové pole ("Možnosť 3.1", "Možnosť 3.2", "Možnosť 3.3", "Možnosť 3.4");

menu // hodnota je "Menu2"

menu // hodnota je "Menu3"

menu // hodnota je "Možnosť 2.1"

menu // hodnota je "Možnosť 3.2"

Array Methods

AT túto sekciu Pozrime sa na metódy, pomocou ktorých môžete manipulovať s prvkami polí.

pripojiť sa () - metóda, ktorá konvertuje každý z prvkov poľa na reťazec a spája ich. Ako argument metódy môžete zadať voliteľný reťazec určený na oddelenie jednotlivých prvkov v celkovom reťazci. Ak nezadáte oddeľovač, štandardne sa na oddeľovanie použije čiarka.

var arr = ; // dané pole troch prvkov

varstr = arr.join(); // hodnota str je "12,23,38"

str = arr.join("; "); // str == "12; 23; 38"

Ako sme už uviedli, metóda Array.join() je opakom metódy String.split(), ktorá rozdeľuje reťazce na prvky poľa.

spätne () - metóda, ktorá obráti poradie prvkov v poli. Táto metóda nevytvorí nové pole, ale zmení ich poradie v pôvodnom poli.

var arr = new Array(1,2,3); // arr = 1, arr = 2, arr = 3

arr.reverse(); // arr = 3, arr = 2, arr = 1

var str = arr.join(); // str == "3,2,1"

zoradiť () - metóda, ktorá triedi prvky poľa na mieste a vracia zoradené pole. Ak sa metóda sort() zavolá bez argumentov, zoradí prvky poľa abecedne a dočasne ich skonvertuje na hodnoty reťazca, aby sa v prípade potreby vykonalo porovnanie.

var arr = new Array("banana", "sherry", "jablko");

varstr = arr.join(", "); // str == "jablko, banán, čerešňa"

Ak je v poli nedefinovaný prvok, presunie sa na koniec poľa.

Aby bolo možné triediť nie v abecednom poradí, ale nejakým iným spôsobom, porovnávacia funkcia sa odovzdáva metóde sort () ako argument, ktorej úlohou je uviesť pravidlo, podľa ktorého bude jeden z jej dvoch argumentov umiestnený skôr. v zoradenom zozname. Ak pred druhým musí byť uvedený prvý argument, porovnávacia funkcia musí vrátiť zápornú hodnotu. Ak v zoradenom poli musí prvý argument nasledovať za druhým, funkcia musí vrátiť kladné číslo. Porovnávacia funkcia by mala vrátiť 0, ak sú tieto dve hodnoty ekvivalentné, t.j. ich poradie nie je dôležité. Príklad.

Zoraďme v číselnom poradí.

var arr = ;

arr.sort(); // v abecednom poradí: 11111, 2222, 333, 44

arr.sort(funkcia(prvá,druhá) ( //

vrátiť prvý - druhý; )); // Číselné poradie: 44, 333, 2222, 11111

V tomto úryvku kódu je vhodné použiť doslovný znak funkcie, pretože porovnávacia funkcia sa zavolá raz a nie je potrebné ju pomenovať.

Definovaním ďalších triediacich funkcií môžete implementovať širokú škálu metód triedenia.

concate() - metóda, ktorá vytvorí a vráti nové pole obsahujúce prvky pôvodného poľa, doplnené o hodnoty všetkých argumentov špecifikovaných v metóde concat(). V prípade, že samotný argument je pole, jeho prvky sa pridajú do konečného poľa. Treba však poznamenať, že pri oddeľovaní polí od polí sa nevykonáva rekurzia.

var arr = ;

arr.concat(4, 5) // výsledok

arr. concat(); // výsledok

arr. concat (,) // výsledok

arr. concat (4, ]) // výsledok ]

plátok() - metóda, ktorá vracia podpole (fragment) pôvodného poľa. Metóda má dva argumenty, ktoré označujú začiatok a koniec vráteného podpola. Vrátené pole bude obsahovať prvky od toho, ktorého index je určený prvým argumentom, až po prvok, ktorého číslo je špecifikované druhým argumentom, ale bez tohto prvku.

Ak zadáte jeden argument, vrátené pole bude obsahovať prvky od pozície určenej argumentom po koniec poľa. Záporný argument určuje číslo prvku poľa od konca poľa.

var arr = ;

arr.slice(0,3); // návrat

arr. plátok (3); // návrat

arr. plátok(1,-1); // návrat

arr. plátok(-3,-2); // návrat

spoj()- všeobecná metóda, ktorú možno použiť na pridávanie a odstraňovanie prvkov poľa alebo na obe operácie súčasne. V dôsledku operácie metódy sa pôvodné pole zmení.

V metóde splice() prvý argument určuje index poľa, z ktorého sa začne mazanie a/alebo vkladanie, druhý argument určuje počet prvkov, ktoré sa majú odstrániť. Ak vynecháte druhý argument, prvky poľa sa vymažú, počnúc od pozície určenej prvým argumentom metódy až po koniec poľa. Vráti metódu splice(). rad odstránených prvkov. Ak je druhý argument 0, metóda vráti prázdne pole.

var arr = ;

arr.splice(4); // vráti ; arr sa rovná

arr.splice(1,2); // vráti ; arr sa rovná

Môžu nasledovať dva argumenty metódy splice(), ktoré špecifikujú prvky poľa, ktoré sa majú odstrániť ľubovoľné čísloďalšie argumenty určujúce prvky, ktoré sa majú vložiť do poľa, počnúc indexom daným prvým argumentom metódy.

var arr = ;

arr.splice(2,0,"ab","cd"); /* vráti sa ; arr sa zmení na */

arr.splice(2,2,,3); /* vráti ["ab","cd"]; arr sa zmení na ,3,33,44,55] */

Mali by ste vziať do úvahy skutočnosť, že metóda splice() nerozdeľuje argumenty poľa na samostatné vložené prvky, ale vkladá pole samotné.

push() a pop() - metódy, ktoré umožňujú použitie polí ako zásobníkov. Metóda push() pridáva nové prvky na koniec poľa a vracia novú dĺžku poľa. Metóda pop() odstráni posledný prvok v poli a ako výsledok vráti odstránenú hodnotu.

Obe metódy upravujú pôvodné pole. Pri použití kombinácie metód push() a pop() v JavaScripte vo svojom kóde môžete použiť pole na vytvorenie zásobníka s pravidlom služby prvý dnu, posledný.

var stack = ; // prázdny zásobník

stack.push(1,2); // pole: vráti 2

stoh. pop(); // pole: vráti 2

stack.push(3); // pole: vráti 2

stack.pop(); // pole: vráti 3

stack.push(); // pole: ] vráti 2

stoh. pop() // pole: vráti

stoh. pop(); // pole: vráti 1

unshift() a shift() - metódy, ktoré fungujú takmer rovnako ako push() a pop(), ale prvky vkladajú a odstraňujú nie na koniec poľa, ale na začiatok.

Metóda unshift() pridá jeden alebo viac prvkov na začiatok poľa, posunie prvky na koniec poľa a vráti novú dĺžku poľa. Metóda shift() sa používa na odstránenie prvého prvku poľa a vráti odstránený prvok.

var arr = ; // arr:

arr.unshift(1); // arr: vráti 1

arr.unshift(22); // arr: vráti 2

arr.shift(); // arr: vráti 22

arr.unshift(3,); // arr:,1] vráti 3

arr.shift(); // arr:[,1] vráti 3

arr.shift(); // arr: vráti sa

arr.shift(); // arr: vráti 1

Pri volaní metódy unshift() s viacerými argumentmi sa tieto argumenty vložia všetky naraz, a nie jeden po druhom, ako sa to stáva v metóde splice(). To znamená, že v konečnom poli budú hodnoty usporiadané v rovnakom poradí, v akom boli zapísané v zozname argumentov pri volaní metódy.

toString() a toLocaleString()- metódy, ktoré konvertujú každý z prvkov poľa na reťazec a zobrazia zoznam prijatých reťazcov oddelených čiarkami. Metóda toString(), ako už bolo uvedené, je dostupná pre akýkoľvek objekt v JavaScripte vrátane poľa. Upozorňujeme, že v dôsledku fungovania metód nezostávajú okolo hodnôt poľa ani hranaté zátvorky ani žiadne iné oddeľovače.

ToString() // vráti "1,2,3"

["a", "b", "c"].toString() // vráti "a,b,c"

].toString() // vráti "1,2,s"

Metóda toString() vráti rovnaký reťazec ako metóda join(), ak je volaná bez parametrov.

toLocaleString() je metóda, pri ktorej sa výsledné reťazce spájajú pomocou oddeľovača špecifického pre oblasť.

Príklad 1. Vytvorenie cyklického bannera (slide show).

Vytvorme pole obrázkov, ktoré sa budú na stránke objavovať v určitých intervaloch.

Zmena obrazu

Príklad 2. Zobrazenie náhodného aforizmu na stránke. Pri každom obnovení stránky sa objaví náhodný aforizmus.

Náhodný aforizmus na stránke

dátumový objekt

AT objekt JavaScript Dátum je navrhnutý tak, aby pracoval s hodnotami dátumu a času. Inštanciu objektu vytvorí konštruktor Date() pomocou operátora new.

var novy_den = novy datum();/* Bola vytvorená inštancia objektu, ktorá uchováva informácie o aktuálnom čase a dátume (číta systémový čas počítača). */

var Vianoce = new Date(2016, 11, 25);/* Vytvorí sa inštancia objektu s dátumom Vianoc. Čísla mesiacov sú založené na nule, takže december je očíslovaný 11 */

Metódy definované v objekte Date() vám umožňujú nastaviť a uložiť rôzne časy a dátumy a vykonať s nimi sériu akcií pomocou miestneho času alebo greenwichského času (GMT).

Christmas.setFullYear(xmas.getFullYear() + 1);/* Dátum Vianoc budúci rok */

var všedný deň = Vianoce.getDay();// Deň vianočného týždňa.

document.write("Dnes: " + new_day.toLocaleString());// Hodnota reťazca aktuálneho dátumu a času.

JavaScript definuje funkcie pre objekt Date() (nevolá sa cez objekt Date(), teda nie metódy, ale funkcie) na konverziu dátumu, daného ako číslo alebo reťazec, na internú reprezentáciu v milisekundách, ktorá sa používa v niektorých operáciách. s dátumami.

Konštruktor pri vytváraní novej inštancie objektu Date() možno použiť v nasledujúce možnosti:

new Date();/* Konštruktor Date() bez argumentov vytvorí objekt, ktorého hodnota sa rovná aktuálnemu dátumu a času. */

new Date(number_miliseconds);/* V konštruktore je zadaná jedna číselná hodnota a používa sa ako milisekundová reprezentácia dátumu, ktorá je rovnaká ako hodnota vrátená metódou getTime().*/

new Date(date_retazec_representation);/* Ak je konštruktoru zadaný jeden reťazcový argument, považuje sa za reťazcovú reprezentáciu dátumu vo formáte, ktorý metóda Date.parse() akceptuje. */

nový dátum (rok, mesiac, deň, hodiny, minúty, sekundy, milisekundy);/* Konštruktoru možno odovzdať dva až sedem číselných argumentov špecifikujúcich jednotlivé polia dátumu a času. Okrem prvých dvoch polí, ktoré určujú rok a mesiac, sú všetky ostatné argumenty voliteľné. */

Date() možno volať ako funkciu bez operátora new. V tomto prípade sú všetky odovzdané argumenty ignorované, vráti sa aktuálny dátum a čas.

Uveďte, aké hodnoty môžu mať argumenty pri použití rôznych foriem konštruktora:

num_milliseconds je počet milisekúnd medzi požadovaným dátumom a polnocou 01. januára 1970 (UTC). Povedzme, že ak je argument 5000, vytvorí sa dátum päť sekúnd po polnoci 1.1.1970.

date_string_representation - Argument určuje dátum a voliteľný čas ako reťazec. Reťazec musí byť vo formáte, ktorému metóda Date.parse() rozumie.

rok - štyri číslice roka. Pre kompatibilitu so staršími implementáciami JavaScriptu, ak je hodnota argumentu medzi 0 a 99, k jeho hodnote sa pripočíta číslo 1900.

deň je celé číslo od 1 do 31 predstavujúce deň v mesiaci. Argument je voliteľný.

hodiny je celé číslo od 0, čo znamená polnoc, do 23. Argument je voliteľný.

minúty je celé číslo od 0 do 59. Argument je voliteľný.

sekúnd. Sekundy v minútach, zadané ako celé číslo od 0 do 59. Voliteľný argument.

milisekúnd je počet milisekúnd zadaný ako celé číslo medzi 0 a 999. Argument je voliteľný.

Posledná aktualizácia: 04.09.2018

Polia sú navrhnuté na prácu s množinami údajov. Výraz new Array() sa používa na vytvorenie poľa:

var myArray = new Array();

Existuje aj kratší spôsob inicializácie poľa:

Var myArray = ;

V tomto prípade vytvárame prázdne pole. Môžete k nemu však pridať aj počiatočné údaje:

Var ľudia = ["Tom", "Alice", "Sam"]; konzolový denník (ľudia);

V tomto prípade bude mať pole myArray tri prvky. Graficky to možno znázorniť takto:

Indexy sa používajú na prístup k jednotlivým prvkom poľa. Počet začína od nuly, to znamená, že prvý prvok bude mať index 0 a posledný bude mať index 2:

Var ľudia = ["Tom", "Alice", "Sam"]; konzolový denník (ľudia); // Tom var osoba3 = ľudia; // Sam console.log(person3); // Sam

Ak sa pokúsime získať prístup k prvku s indexom väčším ako je veľkosť poľa, dostaneme nedefinované:

Var ľudia = ["Tom", "Alice", "Sam"]; konzolový denník (ľudia); // nedefinované

Pomocou indexu sú tiež nastavené hodnoty pre prvky poľa:

Var ľudia = ["Tom", "Alice", "Sam"]; konzolový denník (ľudia); // Tom ľudia = "Bob"; konzolový denník (ľudia); // Bob

Navyše, na rozdiel od iných jazykov, ako je C# alebo Java, môžete nainštalovať prvok, ktorý nie je pôvodne nainštalovaný:

Var ľudia = ["Tom", "Alice", "Sam"]; konzolový denník (ľudia); // undefined - v poli sú len tri prvky people = "Bob"; konzolový denník (ľudia); // Bob

Za zmienku tiež stojí, že na rozdiel od mnohých programovacích jazykov nie sú polia JavaScriptu silne zadávané, jedno pole môže ukladať údaje rôznych typov:

Objekty Var = ["Tom", 12, pravda, 3,14, nepravda]; konzolový protokol (objekty);

operátor šírenia

Operátor šírenia ... vám umožňuje brať hodnoty z poľa jednotlivo:

nech čísla = ; konzolový denník(...čísla); // 1 2 3 4 console.log(numbers); //

Operátor rozšírenia je umiestnený pred pole. Výsledkom je, že výraz...čísla vráti množinu čísel, no nebude to pole, ale jednotlivé hodnoty.

Viacrozmerné polia

Polia môžu byť jednorozmerné alebo viacrozmerné. Každý prvok vo viacrozmernom poli môže byť samostatným poľom. Vyššie sme uvažovali o jednorozmernom poli, teraz vytvoríme viacrozmerné pole:

var cisla1 = ; // jednorozmerné pole var čísla2 = [, ]; // dvojrozmerné pole

Vizuálne môžu byť obe polia reprezentované nasledovne:

Jednorozmerné čísla poľa1

Na získanie jednotlivého prvku poľa sa tiež používa index:

Var tomInfo = ľudia;

Až teraz bude premenná tomInfo predstavovať pole. Aby sme dostali prvok do vnoreného poľa, musíme použiť jeho druhú dimenziu:

Console.log("Meno: " + ľudia); // Tom console.log("Vek: " + ľudia); // 25

To znamená, že ak dokážeme vizuálne znázorniť dvojrozmerné pole ako tabuľku, prvok ľudia sa bude vzťahovať na bunku tabuľky umiestnenú na priesečníku prvého riadka a druhého stĺpca (prvý rozmer je 0 - riadok, druhý rozmer - 1 - stĺpec).

Môžeme tiež urobiť úlohu:

Var ľudia = [ ["Tom", 25, nepravda], ["Bill", 38, pravda], ["Alice", 21, nepravda] ]; ľudí = 56; // priradenie samostatnej hodnoty console.log(people); // 56 ľudí = ["Bob", 29, false]; // priradenie poľa console.log(people); // Bob

Pri vytváraní viacrozmerných polí sa neobmedzujeme len na dvojrozmerné, ale môžeme použiť aj polia veľkých rozmerov:

varnumbers = ; čísla = ; // cisla je teraz 2D pole cisla=; // čísla sú teraz 3D pole čísla = 5; // prvý prvok 3D poľa je 5 console.log(numbers);

  • I. Iterácia cez skutočné polia
    1. pre každú metódu a súvisiace metódy
    2. pre slučku
    3. Správne používanie slučky for...in
    4. for...of loop (implicitné použitie iterátora)
    5. Explicitné použitie iterátora
    1. Použitie skutočných metód iterácie poľa
    2. Previesť na skutočné pole
    3. Poznámka k objektom runtime

I. Iterácia cez skutočné polia

Na tento moment Existujú tri spôsoby iterácie prvkov skutočného poľa:
  1. metóda Array.prototype.forEach ;
  2. klasická slučka for;
  3. "Dobre tvarovaný" pre...v slučke.
Okrem toho sa čoskoro s príchodom nového štandardu ECMAScript 6 (ES 6) očakávajú ďalšie dve metódy:
  1. for...of loop (implicitné použitie iterátora);
  2. explicitné použitie iterátora.

1. Metóda forEach a súvisiace metódy

Ak je váš projekt navrhnutý tak, aby podporoval funkcie štandardu ECMAScript 5 (ES5), môžete použiť jednu z jeho inovácií – metódu forEach.

Príklad použitia:
var a = ["a", "b", "c"]; a.forEach(funkcia(položka) ( console.log(entry); ));
Vo všeobecnosti si použitie forEach vyžaduje zahrnutie knižnice emulácie es5-shim pre prehliadače, ktoré nemajú natívnu podporu pre túto metódu. Patrí medzi ne IE 8 a starší, ktoré sa na niektorých miestach stále používajú.

Výhodou forEach je, že nie je potrebné deklarovať lokálne premenné na uloženie indexu a hodnoty aktuálneho prvku poľa, pretože sú automaticky odovzdané funkcii. zavolaj späť(callback) ako argumenty.

Ak sa obávate možných nákladov na spätné volanie pre každý prvok, nezúfajte a prečítajte si toto.

ForEach je navrhnutý tak, aby iteroval cez všetky prvky poľa, ale okrem toho ES5 poskytuje niekoľko ďalších užitočných metód na iteráciu všetkých alebo niektorých prvkov a navyše s nimi niečo robí:

  • every - vráti hodnotu true, ak pre každý prvok poľa vráti spätné volanie hodnotu, ktorá sa vyhodnotí ako true .
  • some - vráti hodnotu true, ak pre aspoň jeden prvok poľa spätné volanie vráti hodnotu, ktorá sa vyhodnotí ako true .
  • filter - vytvorí nové pole obsahujúce tie prvky pôvodného poľa, pre ktoré spätné volanie vráti hodnotu true .
  • mapa - vytvorí nové pole pozostávajúce z hodnôt vrátených spätným volaním.
  • redukovať – Zmenší pole na jednu hodnotu aplikovaním spätného volania postupne na každý prvok poľa, počnúc prvým (môže byť užitočné pri výpočte súčtu prvkov poľa a iných súhrnných funkcií).
  • ZníženieVpravo – funguje podobne ako zmenšenie, ale prvky sa opakujú v opačnom poradí.

2. Slučka for

Staré dobré pre skaly:

Var a = ["a", "b", "c"]; var index; pre (index = 0; index< a.length; ++index) { console.log(a); }
Ak sa dĺžka poľa nemení počas celej slučky a samotná slučka patrí do časti kódu kritickej z hľadiska výkonu (čo je nepravdepodobné), potom môžete použiť „optimálnejšiu“ verziu pre s ukladaním dĺžky poľa:

Var a = ["a", "b", "c"]; var index, len; for (index = 0, len = a.dĺžka; index< len; ++index) { console.log(a); }
Teoreticky by mal tento kód bežať o niečo rýchlejšie ako predchádzajúci.

Ak nie je dôležité poradie iterácií prvkov, môžete ísť ešte ďalej z hľadiska optimalizácie a zbaviť sa premennej na ukladanie dĺžky poľa obrátením poradia iterácií:

Var a = ["a", "b", "c"]; var index; for (index = a.length - 1; index >= 0; --index) ( console.log(a); )
Avšak v modernej JavaScript motory optimalizačné hry ako táto zvyčajne nič neznamenajú.

3. Správne používanie slučky for...in

Ak vám odporúčame použiť cyklus for...in, nezabudnite, že iterovanie cez polia nie je to, na čo je určené. Na rozdiel od populárnej mylnej predstavy, cyklus for...in neopakuje indexy poľa, ale vymeniteľné vlastnosti objektu.

V niektorých prípadoch, ako je napríklad iterácia cez riedke polia, môže byť for...in užitočné, ak dodržíte preventívne opatrenia, ako je uvedené v príklade nižšie:

// a - riedke pole var a = ; a = "a"; a = "b"; a = "c"; for (kľúč var v a) ( if (a.hasOwnProperty(key) && /^0$|^\d*$/.test(key) && kľúč<= 4294967294) { console.log(a); } }
V tomto príklade sa pri každej iterácii cyklu vykonajú dve kontroly:

  1. že pole má svoju vlastnú vlastnosť s názvom key (nezdedenú od svojho prototypu).
  2. tento kľúč je reťazec obsahujúci desiatkový zápis celého čísla, ktorého hodnota je menšia ako 4294967294 . Odkiaľ pochádza posledné číslo? Z definície indexu poľa v ES5, z ktorej vyplýva, že najvyšší index, ktorý môže mať prvok v poli, je (2^32 - 2) = 4294967294 .
Samozrejme, takéto kontroly si pri vykonávaní slučky vyžiadajú viac času. Ale v prípade riedkeho poľa je táto metóda efektívnejšia ako cyklus for, pretože v tomto prípade sa iterujú iba tie prvky, ktoré sú v poli explicitne definované. Takže vo vyššie uvedenom príklade sa vykonajú iba 3 iterácie (pre indexy 0, 10 a 10000) - oproti 10001 v slučke for.

Aby ste nepísali takýto ťažkopádny kontrolný kód zakaždým, keď potrebujete iterovať pole, môžete ho napísať ako samostatnú funkciu:

Funkcia arrayHasOwnIndex(pole, kľúč) ( return array.hasOwnProperty(key) && /^0$|^\d*$/.test(key) && kľúč<= 4294967294; }
Potom sa telo slučky z príkladu výrazne zníži:

For (key in a) ( if (arrayHasOwnIndex(a, key)) ( console.log(a); ) )
Vyššie uvedený kód kontrol je univerzálny, vhodný pre všetky prípady. Namiesto toho však môžete použiť kratšiu verziu, hoci formálne nie celkom správnu, ale napriek tomu vhodnú pre väčšinu prípadov:

For (key in a) ( if (a.hasOwnProperty(key) && String(parseInt(key, 10)) === key) ( console.log(a); ) )

4. Cyklus for...of (implicitné použitie iterátora)

ES6, zatiaľ čo je stále v stave konceptu, by mal zaviesť iterátory do JavaScriptu.

iterátor je objektovo implementovaný protokol, ktorý definuje štandardný spôsob získania postupnosti hodnôt (či už konečných alebo nekonečných).
Iterátor je objekt, ktorý definuje metódu next(), funkciu bez argumentov, ktorá vracia objekt s dvoma vlastnosťami:

  1. done (boolean) - true, ak iterátor dosiahol koniec iterovateľnej sekvencie. V opačnom prípade je to falošné.
  2. hodnota – definuje hodnotu vrátenú iterátorom. Môže byť nedefinované (chýba), ak je vlastnosť done nastavená na hodnotu true .
Mnohé vstavané objekty, vr. skutočné polia majú štandardne iterátory. Najjednoduchší spôsob, ako použiť iterátor na skutočných poliach, je použiť konštrukciu new for...of.

Príklad použitia pre...z:

Varval; var a = ["a", "b", "c"]; for (val of a) ( console.log(val); )
Vo vyššie uvedenom príklade cyklus for...of implicitne volá iterátor objektu Array, aby získal každú hodnotu v poli.

5. Explicitné použitie iterátora

Iterátory možno použiť aj explicitne, aj keď v tomto prípade sa kód stáva oveľa komplikovanejším v porovnaní so slučkou for...of. Vyzerá to asi takto:

Var a = ["a", "b", "c"]; var it = a.entries(); vstup var; while (!(entry = it.next()).done) ( console.log(entry.value); )
V tomto príklade metóda Array.prototype.entries vracia iterátor, ktorý sa používa na zobrazenie hodnôt poľa. V každej iterácii obsahuje entry.value pole v tvare [kľúč, hodnota] .

II. Iterovanie cez objekty podobné poliam

Okrem skutočných polí má aj JavaScript objekty podobné poliam . So skutočnými poľami majú spoločné to, že majú vlastnosť length a vlastnosti s názvami vo forme čísel, ktoré zodpovedajú prvkom poľa. Príklady zahŕňajú DOM kolekcie NodeList a pseudopole argumentov dostupné v rámci akejkoľvek funkcie/metódy.

1. Použitie metód na iteráciu cez skutočné polia

Prinajmenšom väčšina, ak nie všetky, metódy na iteráciu cez skutočné polia sa dajú použiť na iteráciu cez objekty podobné poliam.

Konštrukcie for a for...in možno použiť na objekty podobné poliam presne rovnakým spôsobom ako skutočné polia.

ForEach a ďalšie metódy Array.prototype sa vzťahujú aj na objekty podobné poliam. Ak to chcete urobiť, musíte použiť volanie Function.call alebo Function.apply.

Napríklad, ak chcete použiť forEach na vlastnosť childNodes objektu Node, urobili by ste to takto:

Array.prototype.forEach.call(node.childNodes, function(child) ( // urobte niečo s podriadeným objektom));
Pre pohodlie opätovného použitia tejto techniky môžete deklarovať odkaz na metódu Array.prototype.forEach v samostatnej premennej a použiť ju ako skratku:

// (Za predpokladu, že všetky nižšie uvedené kódy sú v rovnakom rozsahu) var forEach = Array.prototype.forEach; // ... forEach.call(node.childNodes, function(child) ( // urobte niečo s podriadeným objektom));
Ak má objekt podobný poľu iterátor, potom ho možno použiť explicitne alebo implicitne na iteráciu objektu rovnakým spôsobom ako v prípade skutočných polí.

2. Previesť na skutočné pole

Existuje aj ďalší, veľmi jednoduchý spôsob, ako iterovať objekt podobný poľu: previesť ho na skutočné pole a použiť ktorúkoľvek z vyššie uvedených metód na iteráciu cez skutočné polia. Na konverziu môžete použiť generickú metódu Array.prototype.slice , ktorú možno použiť na akýkoľvek objekt podobný poľu. To sa robí veľmi jednoducho, ako je znázornené na príklade nižšie:

Var trueArray = Array.prototype.slice.call(arrayLikeObject, 0);
Napríklad, ak chcete previesť kolekciu NodeList na skutočné pole, budete potrebovať kód ako je tento:

Vardivs = Array.prototype.slice.call(document.querySelectorAll("div"), 0);
aktualizovať: Ako uviedli v komentároch rock a torbasow, v ES6 môžete namiesto Array.prototype.slice použiť viac popisnú metódu Array.from.

3. Poznámka k objektom runtime

Ak použijete metódy Array.prototype na objekty runtime (ako sú kolekcie DOM), mali by ste si byť vedomí toho, že nie je zaručené, že tieto metódy budú správne fungovať vo všetkých prostrediach runtime (vrátane prehliadačov). Závisí to od správania sa konkrétneho objektu v konkrétnom runtime, presnejšie od toho, ako je v danom objekte implementovaná abstraktná operácia HasProperty. Problém je v tom, že samotný štandard ES5 pripúšťa možnosť nesprávneho správania objektu vzhľadom na túto operáciu (pozri § 8.6.2).

Preto je dôležité otestovať fungovanie metód Array.prototype v každom runtime (prehliadači), v ktorom plánujete používať vašu aplikáciu.

Zdravím všetkých, ktorých zaujíma taká téma ako JavaScript multidimenzionálne polia a triedenie. V aktuálnej publikácii sa pokúsim túto tému obsiahnuť do všetkých podrobností.

Preto sa po prečítaní článku dozviete, prečo sa vo webových aplikáciách používajú multidimenzionálne polia, ako sa vytvárajú a ako sa dajú spravovať a triediť. Začnime sa učiť!

Ako sa vytvárajú viacrozmerné polia a na čo slúžia?

Na začiatok je potrebné pripomenúť, ako sa vytvára pravidelné jednorozmerné pole.

pole =

Teraz si pamätajte, že viacrozmerné pole je pole polí. Súhlasím, znie to ako tautológia. Prečítajte si však definíciu ešte raz. V skutočnosti viacrozmerné pole pozostáva z určitého počtu vnorených .

Zvážte nasledujúcu situáciu. Na začiatku určitej hry používateľ zadá svoje meno a po skončení sa na obrazovke zobrazí hodnotiaca tabuľka s menami hráčov a ich záznamami.

Je zrejmé, že takéto informácie sú uložené v databáze. Ale keď ho vytiahneme z databázy, dostaneme viacrozmerné pole. Koniec koncov, každé podpole obsahuje prihlásenie hráča a počet získaných bodov.

Všetko to bude vyzerať takto:

var výsledky = [ ["Markus", 333], ["Natasha", 211], ["Alex", 124] ];

Ako vidíte, informácie môžu byť uložené heterogénne. Môžu to byť reťazce, čísla a dokonca aj . Je to možné, pretože polia v nie sú napísané.

V tomto prípade sa prístup k prvkom uskutočňuje cez dvojitý operátor.

Na konsolidáciu materiálu analyzujte malý program.

Hodnota výsledkov =

Polia sú pomerne pohodlným prostriedkom na ukladanie objednaných komplexných údajov počas spracovania. Navyše sa s nimi veľmi pohodlne pracuje a zároveň je ich rýchlosť spracovania dosť vysoká.

Spôsoby triedenia údajov

JavaScript má zabudovanú metódu pre polia tzv zoradiť (). Tento nástroj je veľmi flexibilný. A teraz vysvetlím prečo.

Ak použijete metódu bez parametrov, automaticky zoradí podpolia podľa prvého prvku v abecednom poradí. Áno, pri volaní výsledky.zoradiť () analyzovaný objekt bude vyzerať takto:

Alexey, 124

Markus, 333

Nataša, 211

A ak vymeníte prvky v každom vnorenom poli, získate:

124, Alexey

211, Nataša

333, Marcus

V tomto prípade sú pre porovnanie všetky prvky dočasne prevedené na reťazce.

Ak na vyriešenie konkrétneho problému potrebujete funkciu, ktorá triedi prvky neštandardným spôsobom, môžete ju napísať sami a odovzdať ako parameter zoradiť (). V tomto prípade stojí za zváženie, že používateľom definovaná funkcia musí vrátiť:

  • kladné číslo (vo všeobecnosti zvoľte 1), ak prvý špecifikovaný prvok nasleduje po druhom pri porovnávaní;
  • záporné číslo (zvyčajne -1), ak má druhá vybraná položka nasledovať po prvej;
  • null, ak sú obe testované hodnoty rovnaké.

Ako príklad si vezmime pôvodné pole výsledky zoradené podľa bodov. Výsledky budú zoradené od najväčšieho po najmenšie. Dá sa to urobiť dvoma spôsobmi.

V prvej možnosti som zmenil logiku triedenia, t.j. v situácii, keď je potrebné vrátiť kladné číslo, vraciam záporné a naopak.

Tabuľka záznamov:

Ale v druhej metóde som nechal logiku triedenia nedotknutú, ale použil som ďalšiu metódu - obrátiť (). Ako už názov napovedá, reverzné obráti poradie prvkov.

Takže funkcia sort() by vyzerala takto:

1 2 3 4 5 funkcia RecordSort(a, b) ( ak (a > b) vráti 1; inak ak (a< b) return -1; else return 0; }

funkcia RecordSort(a, b) ( ak (a > b) vráti 1; inak ak (a< b) return -1; else return 0; }

A potom pridajte vyššie uvedenú metódu.

Záver sa robí rovnakým spôsobom.

Chcem vás upozorniť na jeden dôležitý bod. Pri používaní týchto funkcií sa všetky zmeny vyskytnú v poli, na ktoré ich aplikujete. Ak teda potrebujete zachovať pôvodnú formu údajov, vytvorte kópiu a potom ju upravte.

Nuž, tak som hovoril o viacrozmerných poliach a ich triedení. Ak sa vám článok páčil, prihláste sa na odber blogu a prečítajte si ďalšie rovnako zaujímavé publikácie. Budem vďačný za reposty. Do skorého videnia!

Čau Čau!

S pozdravom Roman Chueshov

V tomto článku sa pozrieme na štandardné polia JavaScriptu s číselnými indexmi. Polia sú deklarované pomocou hranatých zátvoriek:

var fruits = ["Jablko", "Pomaranč", "Osol"]

Ak chcete extrahovať prvok, vložte jeho index do hranatých zátvoriek. Prvý index 0:

var fruits = ["Jablko", "Pomaranč", "Osol"] upozornenie (ovocie) upozornenie (ovocie) upozornenie (ovocie)

Môžeme tiež získať dĺžku poľa JavaScript:

var fruits = ["Jablko", "Pomaranč", "Osol"] upozornenie(ovocie.dĺžka)

Ojoj! Vytvorili sme pole s dvoma plodmi a oslom. Teraz musíme odstrániť osla.

pop a push metódy

Metóda pop v JavaScripte odstráni prvok poľa a vráti ho.

Nasledujúci príklad ukazuje, ako sa „Osol“ získava z poľa:

var fruits = ["Apple", "Orange", "Donkey"] alert("Odstraňujem "+fruits.pop()) // Teraz máme len ["Apple","Orange"] alert("Teraz veľkosť poľa: "+fruits.length) // somár odstránený

Všimnite si, že pop upravuje samotné pole.

Popovým náprotivkom je metóda push, ktorá do poľa pridáva prvok. Zabudli sme napríklad pridať broskyňu:

var ovocie = ["Jablko", "Pomaranč"] fruits.push("Peach"); // teraz máme upozornenie ["Apple", "Orange", "Peach"] ("Posledná položka:"+ovocie)

  1. Vytvorte štýly poľa s prvkami " Jazz”, “Blues”;
  2. Pridaná hodnota " rock'n'roll«;
  3. Nahraďte druhú hodnotu od konca hodnotou " klasické". Mali by ste skončiť s poľom: " Jazz”, ”klasické”, ”rock'n'roll". Kód by mal fungovať pre akúkoľvek dĺžku poľa;
  4. Extrahujte poslednú hodnotu z poľa a zobrazte ju prostredníctvom upozornenia.

Riešenie

// 1 var styles = ["Jazz", "Bluez"] // 2 styles.push("Rock"n"Roll") // or: styles = "Rock"n"Roll" // 3 štýly = "Classic" " // 4 upozornenie(styles.pop())

metódy radenia/vyraďovania

Metódy shift/unshift fungujú od konca poľa, ale na presun prvkov nahor môžete použiť aj shift ( prvá hodnota poľa sa odstráni posunom prvku). Metóda unshift umožňuje JavaScriptu pridať prvok do poľa od konca:

var fruits = ["Apple", "Orange"] var apple = fruits.shift() // teraz máme len ["Orange"] fruits.unshift("Lemon") // teraz máme ["Lemon", " Orange"] upozornenie (ovocie. dĺžka) // 2

Radenie aj radenie môžu fungovať na viacerých prvkoch súčasne:

var fruits = ["Apple"] fruits.push("Pomaranč","Peach") fruits.unshift("Ananás","Lemon") // pole teraz vyzerá takto: ["Ananás", "Lemon", " Jablko ", "Pomaranč", "Peach"]

Úloha na sebarealizáciu

Napíšte kód na upozornenie na náhodnú hodnotu z poľa arr:

var arr = ["Slivka","Pomaranč","Osol","Mrkva","JavaScript"]

Poznámka: Kód na získanie náhodného čísla od minimálnej po maximálnu hodnotu (vrátane) je nasledujúci:

var rand = min + Math.floor(Math.random()*(max+1-min))

Riešenie

Potrebujeme extrahovať náhodné číslo medzi 0 a arr.length-1 (vrátane):

var arr = ["Slivka","Pomaranč","Osol","Mrkva","JavaScript"] var rand = Math.floor(Math.random()*arr.length) alert(arr)

Iterácia cez pole

V JavaScripte sa iterácia poľa vykonáva pomocou cyklu for:

var ovocie = ["ananás", "citrón", "jablko", "pomaranč", "broskyňa"] pre (var i=0; i

Úloha na sebarealizáciu

Vytvorte funkciu find(arr,value), ktorá nájde hodnotu v danom poli a vráti jej index alebo -1, ak sa nenájde žiadna hodnota.

Napríklad:

arr = [ "test", 2, 1.5, false ] find(arr, "test") // 0 find(arr, 2) // 1 find(arr, 1.5) // 2 find(arr, 0) // - jeden

Riešenie

Možné riešenie môže vyzerať takto:

funkcia find(pole, hodnota) (​for(var i=0; i

Ale to nie je pravda, pretože == nedefinuje rozdiel medzi 0 a false .

Pri práci s poľami v JavaScripte je správnejšie použiť ===. Najnovší štandard ES5 navyše obsahuje funkciu Array#indexOf. Pomocou neho môžeme definovať funkciu takto:

funkcia find(pole, hodnota) (​if (pole.indexOf) vráti pole.indexOf(hodnota) for(var i=0; i

Ešte inteligentnejšie by bolo definovať find cez podmienku na kontrolu, či metóda indexOf existuje.

Úloha na sebarealizáciu

Vytvorte funkciu filterNumeric(arr), ktorá vezme pole a vráti nové pole obsahujúce iba číselné hodnoty z arr.

Príklad, ako by to malo fungovať:

arr = ["a", 1, "b", 2]; arr = filterNumeric(arr); // teraz arr =

Riešenie

Riešením je iterovať pole a pridať hodnoty do nového poľa, ak sú číselné.

spojiť a rozdeliť

Niekedy potrebujete rýchly spôsob, ako previesť pole JavaScript na reťazec. Na to slúži metóda spájania.

Spája pole do reťazca pomocou daného oddeľovača:

var ovocie = ["Citrón","Jablko","Pomaranč","Peach"]; varstr = fruits.join(", "); alert(str);

Spätná transformácia sa dá ľahko vykonať pomocou metódy delenia:

var ovocie = "Jablko, pomaranč, broskyňa"; vararr = ovocie.split(","); // arr teraz obsahuje ["Apple", "Orange", "Peach"] alert(arr);

Úloha na sebarealizáciu

Objekt obsahuje vlastnosť className, ktorá obsahuje názvy tried oddelené medzerami:

Napíšte funkciu addClass(obj, cls), ktorá pridá triedu cls , ale iba ak neexistuje:

ddClass(obj, "new") // obj.className="open menu new" addClass(obj, "open") // nezmenené (trieda už existuje) addClass(obj, "me") // obj.className= " otvoriť menu new me" alert(obj.className) //

Riešenie

Potrebujeme rozdeliť názov triedy a cyklus na časti. Ak sa trieda nenájde, pridá sa.

Slučka je mierne optimalizovaná pre výkon:

function addClass(elem, cls) ( for(var c = elem.className.split(" "), i=c.length-1; i>=0; i--) ( if (c[i] == cls ) return ) elem.className += " "+cls ) var obj = ( className: "open menu" ) addClass(obj, "new") addClass(obj, "open") alert(obj.className) // otvorenie ponuky Nový

Vo vyššie uvedenom príklade je premenná c definovaná na začiatku cyklu a jej posledný index je nastavený na i .

Samotný cyklus je spracovaný v opačnom smere a končí podmienkou i>=0 . Pretože kontrola i>=0 je rýchlejšia ako i . Čo v JavaScripte zrýchľuje vyhľadávanie polí.

Použitie dĺžky na orezanie poľa

Pomocou vlastnosti length môžete orezať pole takto:

Nastavíte dĺžku a prehliadač pole oreže.

Pole je objekt, čo znamená

V skutočnosti je pole v JavaScripte objektom s automatickým nastavením dĺžky a špeciálnymi metódami.

Toto sa líši od konceptu v iných jazykoch, kde sú polia súvislým segmentom pamäte. Toto sa tiež líši od prepojeného zoznamu založeného na fronte alebo zásobníku.

Nenumerické klávesy poľa

Kľúče sú čísla, ale môžu mať ľubovoľné názvy:

arr = arr = 5 arr.prop = 10 // nerobte to

V JavaScripte sú polia hašovacie tabuľky s ich výkonnostnými výhodami, ale aj niektorými nevýhodami.

Napríklad push/pop fungujú len na najvzdialenejších prvkoch poľa, takže sú neuveriteľne rýchle.

push funguje iba s koncom:

var arr = ["Moje", "pole"] arr.push("niečo") alert(arr) // reťazec "pole"

Metódy shift/unshift sú pomalé, pretože potrebujú prečíslovať celé pole. Metóda spájania môže tiež spôsobiť zmenu číslovania:

Takže shift/unshift sú pomalšie ako push/pop . Čím väčšie je pole, tým dlhšie trvá v JavaScripte triedenie poľa.

Úloha na sebarealizáciu

Aký bude výsledok? prečo?

arr = ["a", "b"] arr.push(function() ( alert(this) )) arr() // ?

Riešenie

Keďže polia sú objekty, arr .. je vlastne volanie metódy na objekt ako obj metóda:

arr() // to isté ako arr() // syntakticky nesprávne, ale koncepčne rovnaké: arr.2() // prepísané rovnakým štýlom ako obj.method() this = arr sa v tomto prípade odovzdá funkcii, takže sa vytlačí obsah arr. arr = ["a", "b"] arr.push(function() ( alert(this) )) arr() // "a","b",function

Riedke polia, popis dĺžky

Vlastnosť length vám umožňuje získať nie veľkosť poľa v JavaScripte, ale posledný index + 1 . Toto je dôležité, pokiaľ ide o riedke polia s „medzerami“ v indexoch.

V nasledujúcom príklade pridáme k prázdnym ovocím dva prvky, ale hodnota dĺžky zostane 100:

var fruits = // prázdne pole fruits = "Peach" fruits = "Apple" alert(fruits.length) // 100 (ale v poli sú len 2 prvky)

Ak sa pokúsite vypísať riedke pole, prehliadač vráti hodnoty chýbajúcich indexov ako prázdne prvky:

var fruits = // prázdne pole fruits = "Peach" fruits = "Apple" alert (ovocie) // ,Peach,Apple (alebo niečo podobné)

Ale pole je objekt s dvoma kľúčmi. Chýbajúce hodnoty nezaberajú miesto.

Zriedkavé polia sa správajú bizarne, keď sa na ne aplikujú metódy polí. Netušia, že chýbajú indexy:

var fruits = fruits = "Peach" fruits = "Apple" alert(fruits.pop()) // pop "Apple" (na indexe 9) alert(fruits.pop()) // zobrazí sa nešpecifikovaný prvok (na indexe 8 )

Pokúste sa vyhnúť riedkym poliam. Každopádne, ich metódy nebudú normálne fungovať. Namiesto toho použite Object .

Odstránenie z poľa

Ako vieme, polia sú objekty, takže na odstránenie hodnoty by sme mohli použiť delete:

var arr = ["Go", "to", "home"] delete arr // now arr = ["Go", undefined, "home"] alert(arr) // not set

Môžete vidieť, že hodnota je odstránená, ale nie tak, ako by sme chceli, pretože pole obsahuje nenastavený prvok.

Operátor delete vymaže pár kľúč – hodnota a je to. Prirodzene, keďže pole je len hash, pozícia odstráneného prvku sa stane nedefinovanou.

Najčastejšie potrebujeme odstrániť prvok bez toho, aby sme medzi indexmi nechali "diery". Je tu ešte jedna metóda, ktorá nám s tým pomôže.

spájacia metóda

Metóda spájania môže odstrániť prvky a nahradiť ich vo viacrozmerných poliach JavaScriptu. Jeho syntax je:

arr.splice(index, deleteCount[, prvok1, ..., prvokN])

Odstráni prvok deleteCount počnúc indexom a potom na jeho miesto vloží prvky elem1, ..., elemN.

Pozrime sa na niekoľko príkladov:

var arr = ["Go", "to", "home"] arr.splice(1, 1) // odstránenie 1 prvku od indexu 1 alert(arr.join("")) // ["Go " , "home"] (1 položka bola odstránená)

Takže môžete použiť splice na odstránenie jedného prvku z poľa. Čísla prvkov poľa sa posunú, aby vyplnili medzeru:

var arr = ["Go", "to", "home"] arr.splice(0, 1) // odstránenie 1 prvku počnúc indexom 0 alert(arr) // "to" sa stalo prvým prvkom

Nasledujúci príklad ukazuje, ako nahradiť prvky:

Metóda spájania vracia pole odstránených prvkov:

var arr = ["Choď", "do", "domov", "teraz"]; // odstránenie prvých 2 prvkov var remove = arr.splice(0, 2) alert(removed) // "Go", "to"<-- массив удаленных элементов splice может вставлять элементы, задайте 0 для deleteCount. var arr = ["Go", "to", "home"]; // со второй позиции // удаляем 0 // и вставляем "my", "sweet" arr.splice(2, 0, "my", "sweet") alert(arr) // "Go", "to", "my", "sweet", "home"

Táto metóda môže použiť aj záporný index, ktorý sa počíta od konca poľa:

var arr = // pre prvok -1 (predposledný) // odstráňte 0 prvkov, // a vložte 3 a 4 arr.splice(-1, 0, 3, 4) alert(arr) // 1,2,3, 4.5

Úloha na sebarealizáciu

Objekt obsahuje vlastnosť className, ktorá obsahuje názvy tried oddelené medzerami:

var obj = ( className: "otvoriť menu" )

Napíšte funkciu removeClass(obj, cls), ktorá odstráni triedu cls, ak je zadaná:

removeClass(obj, "open") // obj.className="menu" removeClass(obj, "blabla") // nezmenené (žiadna trieda na odstránenie)

Riešenie

Musíte rozdeliť className na časti a opakovať tieto časti cez slučku. Ak sa nájde zhoda, odstráni sa z poľa objektov JavaScript a potom sa pridá späť na koniec.

Poďme to trochu optimalizovať:

function removeClass(elem, cls) ( for(var c = elem.className.split(" "), i=c.length-1; i>=0; i--) ( if (c[i] == cls ) c.splice(i,1) ) elem.className = c.join(" ") ) var obj = ( className: "open menu" ) removeClass(obj, "open") removeClass(obj, "blabla") upozornenie (obj.className) // menu

Vo vyššie uvedenom príklade je premenná c nastavená na začiatok cyklu a i je nastavený na svoj posledný index.

Samotný cyklus sa vykonáva v opačnom smere a končí sa podmienkou i>=0 . Je to preto, že i>=0 sa kontroluje rýchlejšie ako i . Čo urýchľuje vyhľadávanie vlastností v c .

plátková metóda

Časť poľa môžete extrahovať pomocou metódy slice(begin[, end]): var arr = ["Prečo", "učiť sa", "JavaScript"]; var arr2 = arr.slice(0,2) // preberá 2 prvky začínajúce od 0 alert(arr2.join(", ")) // "Prečo, učiť sa"

Všimnite si, že táto metóda nemení počet prvkov v poli v JavaScripte, ale skopíruje časť z neho.

Druhý argument môžete vynechať, aby ste získali všetky prvky začínajúce na konkrétnom indexe:

var arr = ["Prečo", "učiť sa", "JavaScript"]; var arr2 = arr.slice(1) // akceptuje všetky prvky začínajúce na 1 alert(arr2.join(", ")) // "learn, JavaScript"

Metóda podporuje záporné indexy, rovnako ako String#slice .

reverzná metóda

Ďalšou užitočnou metódou je reverzná metóda. Povedzme, že chcem získať poslednú časť domény, napríklad „ com“ od “ my.site.com". Postup:

var domain = "my.site.com" var last = domain.split(".").reverse() alert(posledná)

Všimnite si, že polia JavaScript podporujú komplexnú syntax (reverse()) na volanie metódy a následné extrahovanie prvku z výsledného poľa.

Môžete vytvárať dlhšie hovory ako reverse() 0] arr.sort() alert(arr) // 1, 15, 2

Spustite vyššie uvedený kód. Dostanete objednávku 1 , 15 , 2 . Je to preto, že metóda konvertuje všetko na reťazec a štandardne používa lexikografické poradie.