Push javascript príklady. Polia v JavaScripte

Metóda tlačiť () pridá jeden alebo viac prvkov na koniec poľa a vráti novú dĺžku poľa.

Syntax

arr .push (prvok1 [, ... [, prvokN]])

parametre

element N Prvky, ktoré sa majú pridať na koniec poľa.

Návratová hodnota

var zelenina = ["paštrnák", "zemiak"]; var moreVegs = ["zeler", "cvikla"]; // Zlúčenie druhého poľa do prvého // Ekvivalentná zelenina.push ("zeler", "cvikla"); Array.prototype.push.apply (zelenina, viacVegs); console.log (zelenina); // ["paštrnák", "zemiaky", "zeler", "červená repa"]

Použitie objektu Array

Ako už bolo spomenuté vyššie, push je zámerne všeobecný a môžeme to využiť vo svoj prospech. Array.prototype.push dokáže spracovať objekt v pohode, ako ukazuje tento príklad. Upozorňujeme, že nevytvárame pole na uloženie kolekcie objektov. Namiesto toho uložíme kolekciu na samotnom objekte a použijeme volanie Array.prototype.push, aby sme oklamali metódu, aby si myslela, že máme čo do činenia s poľom a funguje to len preto, že JavaScript nám umožňuje nastaviť kontext vykonávania, ale prosím.

Var obj = (dĺžka: 0, addElem: funkcia addElem (element) (// dĺžka objektu sa automaticky zvýši // pri každom pridaní prvku. .Push.call (this, elem);)); // Pridajme niekoľko prázdnych objektov len na ilustráciu. Obj.addElem (()); obj.addElem (()); console.log (obj.length); // → 2

Všimnite si, že hoci obj nie je pole, metóda push úspešne zväčšuje dĺžku objektu rovnakým spôsobom, ako keby sme mali do činenia so skutočným poľom.

technické údaje

Kompatibilita prehliadača

ZvláštnosťAndroid WebViewChrome pre AndroidEdge mobilFirefox pre Android Operačný systém AndroidSafari pre iOSInternetový obchod Samsung

V JavaScripte. Tu budeme pokračovať v zoznámení sa s Arrays. Poďme sa baviť o vlastnosti length – ako zistiť: koľko prvkov obsahuje pole?

Poďme sa učiť pridať položky na začiatok a koniec poľa sú metódy unshift a push.

A tiež pomocou metód shift a pop, ktoré môžeme odstrániť položky tiež od začiatku a konca Array!

Pole je v podstate objekt zložený z určitého počtu rôznych prvkov.

Vlastnosť length vám umožní zistiť počet prvkov v poli.

Vezmime si napríklad pole siedmich dní v týždni, ktoré je nám známe z predchádzajúcej témy.

Poďme zistiť a zobraziť počet prvkov v poli. Aby ste to urobili, ako vidíte v príklade nižšie, vytvorte premennú, ktorej hodnotou bude pole, ktoré nás zaujíma, a pre ktorú je zas špecifikovaná vlastnosť length.

array.length - tento kód nám udáva počet prvkov poľa (kde pole - názov poľa) .

Do premennej počet teda vložíme číslo, ktoré sa rovná počtu prvkov v poli.

Takto funguje vlastnosť dĺžky.

Metóda push – pridá položku na koniec poľa.

Ak chcete začať pracovať s metódami pridávania prvkov, musíte vytvoriť pole.

Nižšie som vytvoril pole "Priatelia" - priatelia.

Teraz musíme pridať prvok, teda ešte jeden názov na koniec poľa.

Existuje na to metóda push – pridá položku na koniec poľa. Vyzerá to takto:

Nasťa, Grigorij, Vjačeslav, Alexej, Jakov

Jacob

Aby sme otestovali fungovanie metódy push vo vyššie uvedenom príklade, odvodili sme počet prvkov poľa friends pomocou vlastnosti length – je ich 5. Potom sme odvodili celé pole priateľov, ako aj posledný prvok poľa .

Teraz môžete sami vidieť, že prvok je pridaný na koniec poľa!

Metóda Unshift - pridanie položky na začiatok poľa.

Tu opäť odkazujeme na priateľov Array.

Teraz musíme pridať prvok na začiatok poľa. Na to existuje metóda unshift.

Počet prvkov v poli je 5

Boris, Nastya, Grigory, Vyacheslav, Alexey

Boris

Aby sme otestovali fungovanie metódy unshift, odvodili sme počet prvkov Friend Array pomocou vlastnosti length, potom sme odvodili celé Friend Array, ako aj prvý prvok poľa (pripomeňme, že číslovanie prvkov Array začína od 0) .

Teraz, ako vidíte, prvok je pridaný na začiatok poľa!

Pop metóda - odstraňuje posledný prvok z Array.

A opäť pracujeme s Array "Friends"

Pomocou metódy pop - odstráňte posledný prvok z poľa:

Nasťa, Grigorij, Vjačeslav

Vjačeslav

Pre prehľadnosť metódy pop sme opäť odvodili počet prvkov Array pomocou vlastnosti length, potom sme odvodili celé pole priateľov – bez odstránenia posledného prvku.

A tiež priniesol posledný prvok výsledné pole ... Na zobrazenie posledného prvku pomocou vlastnosti length sme vzali celkový počet zostávajúcich prvkov v poli (3) a odčítali 1. Posledný prvok poľa sme teda zobrazili na čísle 2. Toto je však tretí prvok, keďže číslovanie v poli začína 0 !!!

Metóda posunu - odstraňuje prvý prvok z Array.

Pred nami, ako predtým, Array "Priatelia"

S metódou posunu - odstráňte prvý prvok z poľa:

Počet prvkov v poli je 3

Gregory, Vyacheslav, Alexey

Gregory

A nakoniec, aby sme otestovali fungovanie metódy posunu, odvodili sme počet prvkov novo získaného poľa pomocou vlastnosti length, potom sme odvodili celé pole priateľov bez odstráneného prvého prvku.

A tiež priniesol prvý prvok poľa... Číslovanie polí začína od 0 !!!

Pripomeniem vám a sebe jedno zaujímavý moment tohto článku!

Aby ste zistili číslo / index posledného prvku poľa, potrebujete z počtu jeho prvkov (t.j. od) Odčítajte jeden!!!

S tým sme už pracovali v téme.

Dobrá voľba ilustrácia tohto momentu bude pokračovaním príkladu z odseku témy, kde sme zvažovali pole siedmich dní v týždni.

Počet prvkov v dňoch Array je 7

Číslo posledného prvku poľa je číslo 6

Takže týmto príkladom sme zároveň opäť upozornili na skutočnosť, že číslovanie v poli začína od 0... A ako môžete vidieť z tohto príkladu, číslo 7. prvku poľa je číslo 6.

Na konci tohto vlákna tiež vykonajte domáca úloha... Opäť to skúste vyriešiť sami.

Domáca úloha na odstránenie z ... a pridanie prvkov do poľa v jazyku Javascript má nasledujúci obsah:

1. Vytvorte pole s ovocím: pomaranč, banán, hruška.
2. Zobrazte na obrazovke koľko tento moment máte ovocie v poli.
3. Pomocou metód naučených v predchádzajúcej lekcii pridajte na koniec poľa dva druhy ovocia – jablko a ananás a na začiatok poľa – grapefruit.
4. Vytlačte na obrazovku, koľko ovocia máte momentálne v poli.
5. Pomocou metód, ktoré ste sa naučili v predchádzajúcej lekcii, odstráňte posledný a prvý prvok z poľa.
6. Zobrazte, koľko ovocia máte momentálne v poli.

Pomaranč, banán, hruška

Teraz mám v košíku 3 druhy ovocia

Grapefruit, pomaranč, banán, hruška, jablko, ananás

Teraz mám v košíku 6 druhov ovocia

Pomaranč, banán, hruška, jablko

Teraz mám v košíku 4 druhy ovocia

Polia

Pole je usporiadaný súbor hodnôt. Hodnoty v poli sa nazývajú prvky a každý prvok je charakterizovaný číselnou pozíciou v poli, ktorá sa nazýva index. Polia v JavaScripte sú bez typu: prvky poľa môžu byť akéhokoľvek typu a rôzne prvky toho istého poľa môžu byť rôznych typov. Prvky poľa môžu byť dokonca objekty alebo iné polia, čo vám umožňuje vytvárať zložité dátové štruktúry, ako sú polia objektov a polia polí.

Indexy polí v JavaScripte sú založené na nule a používajú 32-bitové celé čísla – prvý prvok poľa má index 0. Polia JavaScriptu sú dynamické: môžu rásť a zmenšovať sa podľa potreby; nie je potrebné deklarovať pevné veľkosti polí pri ich vytváraní alebo opätovne prideľovať pamäť, keď sa mení ich veľkosť.

Polia v JavaScripte sú špecializovanou formou objektov a indexy polí znamenajú niečo viac ako len názvy vlastností, ktoré sú zhodou okolností celé čísla.

Vytváranie polí

Najjednoduchší spôsob vytvorenia poľa je literál, čo je jednoduchý zoznam prvkov poľa v hranatých zátvorkách oddelených čiarkami. Hodnoty v literáli poľa nemusia byť konštanty – môžu to byť ľubovoľné výrazy vrátane objektových literálov:

Var prázdna =; // Prázdne pole var čísla =; // Pole s piatimi číselnými prvkami var misc = [1.1, true, "a",]; // 3 prvky odlišné typy+ koncová čiarka var základ = 1024; var tabuľka =; // Pole s premennými var arrObj = [,]; // 2 polia vo vnútri obsahujúce objekty

Doslovná syntax poľa umožňuje vložiť voliteľnú koncovú čiarku, t.j. literál [,] zodpovedá poľu s dvoma prvkami, nie tromi.

Ďalším spôsobom, ako vytvoriť pole, je zavolať konštruktor Pole ()... Konštruktor možno volať tromi rôznymi spôsobmi:

    Zavolajte konštruktor bez argumentov:

    Var arr = nové pole ();

    V tomto prípade sa vytvorí prázdne pole ekvivalentné doslovu.

    Zavolajte konštruktor s jedným číselným argumentom špecifikujúcim dĺžku poľa:

    Var arr = nové pole (10);

    V tomto prípade sa vytvorí prázdne pole zadanej dĺžky. Túto formu volania konštruktora Array () možno použiť na predbežné pridelenie pamäte pre pole, ak je počet jeho prvkov vopred známy. Všimnite si, že to neukladá žiadne hodnoty do poľa.

    Explicitne špecifikujte hodnoty prvých dvoch alebo viacerých prvkov poľa alebo jedného nečíselného prvku vo volaní konštruktora:

    Var arr = nové pole (5, 4, 3, 2, 1, "test");

    V tomto prípade sa argumenty pre konštruktor stanú hodnotami prvkov nového poľa. Používanie literálov poľa je takmer vždy jednoduchšie ako použitie konštruktora Array () týmto spôsobom.

Čítanie a zápis prvkov poľa

Prvky poľa sú prístupné pomocou operátora. Naľavo od zátvoriek musí byť odkaz na pole. Ľubovoľný výraz, ktorý vracia nezápornú celočíselnú hodnotu, musí byť v zátvorkách. Táto syntax je vhodná na čítanie aj zápis hodnoty prvku poľa. Preto sú platné všetky nasledujúce príkazy JavaScript:

// Vytvorenie poľa s jedným prvkom var arr = ["world"]; // Čítanie položky 0 var value = arr; // Zapíšte hodnotu do prvku 1 arr = 3,14; // Zapíšeme hodnotu do prvku 2 i = 2; arr[i] = 3; // Napíšte hodnotu do prvku 3 arr = "hello"; // Prečítaj položky 0 a 2, zapíš hodnotu do položky 3 arr] = arr;

Dovoľte mi pripomenúť, že polia sú špecializovaným druhom objektu. Hranaté zátvorky používané na prístup k prvkom poľa fungujú presne rovnako ako hranaté zátvorky používa sa na prístup k vlastnostiam objektu. Tlmočník JavaScript konvertuje číselné indexy v zátvorkách na reťazce - index 1 sa zmení na reťazec "1" - a potom použije reťazce ako názvy vlastností.

Na prevode číselných indexov na reťazce nie je nič zvláštne: to isté možno urobiť s bežnými objektmi:

Var obj = (); // Vytvorenie jednoduchého objektu obj = "one"; // Indexujte ho celými číslami

Zvláštnosťou polí je, že pri použití názvov vlastností, ktoré sú nezáporné celé čísla, polia automaticky určujú hodnotu vlastnosti. dĺžka... Napríklad pole arr vyššie bolo vytvorené s jedným prvkom. Potom boli jeho prvkom priradené hodnoty s indexmi 1, 2 a 3. V dôsledku týchto operácií sa hodnota vlastnosti dĺžky poľa zmenila a stala sa 4.

Mali by ste jasne rozlišovať medzi indexmi v poli a názvami vlastností objektu. Všetky indexy sú názvy vlastností, ale iba vlastnosti s celočíselnými názvami sú indexy. Všetky polia sú objekty a môžete k nim pridať vlastnosti s ľubovoľným názvom. Ak však ovplyvňujete vlastnosti, ktoré sú indexmi poľa, polia reagujú tak, že podľa potreby aktualizujú hodnotu vlastnosti length.

Upozorňujeme, že ako indexy poľa sú povolené záporné a iné ako celé čísla. V tomto prípade sa čísla skonvertujú na reťazce, ktoré sa používajú ako názvy vlastností.

Pridávanie a odstraňovanie prvkov poľa

Už sme videli, že najjednoduchší spôsob, ako pridať prvky do poľa, je priradiť hodnoty novým indexom. Túto metódu môžete použiť aj na pridanie jedného alebo viacerých prvkov na koniec poľa tlačiť ():

Var arr =; // Vytvorenie prázdneho poľa arr.push ("nula"); // Pridanie hodnoty na koniec arr.push ("one", 2); // Pridajte ďalšie dve hodnoty

Môžete tiež pridať prvok na koniec poľa priradením hodnoty prvku arr. Ak chcete vložiť prvok na začiatok poľa, môžete použiť metódu zrušiť posun () a existujúce prvky v poli sú posunuté k vyšším indexom.

Prvky poľa môžete odstrániť pomocou operátora delete, ako sú bežné vlastnosti objektov:

Var arr =; vymazať arr; 2 v arr; // nepravda, index 2 v poli je nedefinovaný arr.length; // 3: operátor delete nemení vlastnosť dĺžky poľa

Odstránenie prvku je podobné (ale mierne odlišné) s priradením nedefinovanej hodnoty tomuto prvku. Všimnite si, že aplikovanie operátora delete na prvok v poli nemení hodnotu vlastnosti length, ani neposúva prvky s vyššími indexmi nadol, aby sa vyplnila medzera, ktorá zostala po odstránení prvku.

Okrem toho je možné odstrániť prvky na konci poľa jednoduchým priradením novej hodnoty vlastnosti length. Polia majú metódu pop ()(opak metódy push ()), ktorá zmenší dĺžku poľa o 1 a vráti hodnotu odstráneného prvku. Existuje aj metóda posun ()(opak unshift ()), ktorý odstráni prvok na začiatku poľa. Na rozdiel od operátora delete, metóda shift () posúva všetky prvky o jednu pozíciu nižšie pod ich aktuálne indexy.

Nakoniec existuje viacúčelová metóda spoj (), ktorý umožňuje vkladať, mazať a nahrádzať prvky polí. Zmení hodnotu vlastnosti length a podľa potreby posúva prvky poľa s nižšími alebo vyššími indexmi. O všetkých týchto metódach budeme diskutovať o niečo neskôr.

Viacrozmerné polia

JavaScript nepodporuje „skutočné“ viacrozmerné polia, ale dobre ich napodobňuje pomocou polí z polí. Na prístup k dátovej položke v poli polí stačí použiť operátor dvakrát.

Predpokladajme napríklad, že premenná matica je pole polí čísel. Každý prvok matice [x] je pole čísel. Na prístup k určitému číslu v poli môžete použiť maticu výrazov [x] [y]. Nižšie je uvedený konkrétny príklad, kde dvojrozmerné pole používa sa ako násobiaca tabuľka:

// Vytvorenie viacrozmerného poľa var table = new Array (10); // V tabuľke je 10 riadkov pre (var i = 0; i

Metódy triedy Array

Štandard ECMAScript 3 definuje mnoho pohodlných funkcií pre prácu s poľami ako súčasť Array.prototype, ktoré sú dostupné ako metódy akéhokoľvek poľa. Tieto metódy budú uvedené v nasledujúcich podkapitolách.

Metóda pripojenia ().

Metóda Array.join () konvertuje všetky prvky v poli na reťazce, zreťazí ich a vráti výsledný reťazec. Nepovinný argument môže byť odovzdaný metóde s reťazcom, ktorý sa použije na oddelenie prvkov vo výslednom reťazci. Ak nie je zadaný žiadny oddeľovací reťazec, použije sa čiarka. Výsledkom nasledujúceho úryvku je napríklad reťazec „1,2,3“:

Var arr =; arr.join (); // "1,2,3" arr.join ("-"); // "1-2-3"

Obrátená () metóda

Metóda Array.reverse () obráti poradie prvkov v poli a vráti preusporiadané pole. Permutácia sa robí priamo na pôvodnom poli, t.j. táto metóda nevytvorí nové pole s preusporiadanými prvkami, ale zmení ich poradie v už existujúcom poli. Napríklad nasledujúci úryvok, ktorý používa metódy reverse () a join (), vedie k reťazcu "3,2,1":

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

Spôsob triedenia ().

Metóda Array.sort () triedi prvky v pôvodnom poli a vracia zoradené pole. Ak sa metóda sort () zavolá bez argumentov, zoradenie sa vykoná podľa abecedy (pre porovnanie sa položky v prípade potreby dočasne skonvertujú na reťazce). Nedefinované prvky sú zabalené na koniec poľa.

Porovnávaciu funkciu môžete odovzdať ako argument na triedenie () na triedenie v akomkoľvek inom neabecednom poradí. Táto funkcia nastavuje, ktorý z jej dvoch argumentov má byť v triedenom zozname prvý. Ak musí prvý argument predchádzať druhému, porovnávacia funkcia musí vrátiť záporné číslo. Ak má prvý argument nasledovať po druhom v zoradenom poli, funkcia musí vrátiť číslo väčšie ako nula. A ak sú dve hodnoty ekvivalentné (t. j. poradie nie je dôležité), porovnávacia funkcia by mala vrátiť 0:

Var arr =; arr.sort (); // Abecedné poradie: 1111, 222, 33, 4 arr.sort (funkcia (a, b) (// Číselné poradie: 4, 33, 222, 1111 návrat ab; // Vráti hodnotu 0 // v závislosti od zoradenia poradie a a b)); // Zoradiť spätne, od najvyššej po najnižšiu arr.sort (funkcia (a, b) (návrat b-a));

Všimnite si, aké pohodlné je v tomto úryvku použiť nepomenovanú funkciu. Funkcia porovnávania sa používa iba tu, takže jej nie je potrebné dávať meno.

Metóda concat ().

Metóda Array.concat () vytvorí a vráti nové pole obsahujúce prvky pôvodného poľa, na ktorom bola zavolaná metóda concat () a hodnoty všetkých argumentov odovzdaných metóde concat (). Ak je niektorý z týchto argumentov polem, jeho prvky sa pridajú do vráteného poľa. Treba však poznamenať, že neexistuje rekurzívna konverzia poľa z polí na jednorozmerné pole. Metóda concat () nemení pôvodné pole. Nižšie uvádzame niekoľko príkladov:

Var arr =; arr.concat (4, 5); // Vráti arr.concat (); // Vráti arr.concat (,) // Vráti arr.concat (4,]) // Vráti]

Metóda plátku ().

Metóda Array.slice () vracia výsek alebo podpole zadaného poľa. Dva argumenty metódy definujú začiatok a koniec vráteného bloku. Vrátené pole obsahuje prvok očíslovaný v prvom argumente plus všetky nasledujúce prvky až po (okrem iného) prvok očíslovaný v druhom argumente.

Ak je zadaný iba jeden argument, vrátené pole obsahuje všetky prvky od počiatočnej pozície po koniec poľa. Ak je niektorý z argumentov záporný, určuje číslo prvku vzhľadom na koniec poľa. Takže argument -1 zodpovedá poslednému prvku poľa a argument -3 zodpovedá tretiemu prvku poľa od konca. Tu je niekoľko príkladov:

Var arr =; arr.slice (0,3); // Vráti arr.slice (3); // Vráti arr.slice (1, -1); // Vráti arr.slice (-3, -2); // Vráti sa

Splice () metóda

Metóda Array.splice () je všeobecná metóda, ktorá vkladá alebo odstraňuje prvky z poľa. Na rozdiel od metód slice () a concat () metóda splice () modifikuje pôvodné pole, na ktorom bola volaná. Všimnite si, že metódy splice () a slice () majú veľmi podobné názvy, ale vykonávajú úplne odlišné operácie.

Metóda splice () môže odstrániť prvky z poľa, vložiť nové prvky alebo urobiť oboje súčasne. Prvky poľa sú podľa potreby posunuté tak, že po inzercii alebo delécii sa vytvorí súvislá sekvencia.

Prvý argument metódy splice () určuje pozíciu v poli, z ktorej sa má vložiť a/alebo odstrániť. Druhý argument určuje počet prvkov, ktoré sa majú odstrániť (vystrihnúť) z poľa. Ak je druhý argument vynechaný, odstránia sa všetky prvky poľa od zadaného poľa po koniec poľa. Metóda splice () vráti pole odstránených prvkov alebo (ak nebol odstránený žiadny z prvkov) prázdne pole.

Prvé dva argumenty metódy splice () špecifikujú prvky poľa, ktoré sa majú odstrániť. Po týchto argumentoch môže nasledovať ľubovoľný počet ďalších argumentov špecifikujúcich prvky, ktoré sa majú vložiť do poľa, počnúc od pozície určenej v prvom argumente.

Var arr =; arr.splice (4); // Vráti arr = arr.splice (1,2); // Vráti arr = arr.splice (1,1); // Vráti sa; arr = arr =; arr.splice (2,0, "a", "b"); // Vráti sa; arr =

Metódy push () a pop ().

Metódy push () a pop () umožňujú, aby sa s poliami zaobchádzalo ako so zásobníkmi. Metóda push () pridá jeden alebo viacero nových prvkov na koniec poľa a vráti jeho novú dĺžku. Metóda pop () vykoná opačnú operáciu – odstráni posledný prvok poľa, skráti dĺžku poľa a vráti hodnotu, ktorú odstránil. Všimnite si, že obe tieto metódy upravujú pôvodné pole a nevytvárajú jeho upravenú kópiu.

Metódy unshift () a shift ().

Metódy unshift () a shift () sa správajú veľmi podobne ako push () a pop (), okrem toho, že vkladajú a odstraňujú prvky na začiatku poľa, nie na konci. Metóda unshift () posúva existujúce prvky smerom k väčším indexom, aby sa uvoľnilo miesto, pridá prvok alebo prvky na začiatok poľa a vráti novú dĺžku poľa. Metóda shift () odstráni a vráti prvý prvok poľa, pričom všetky nasledujúce prvky posunie o jednu pozíciu nižšie, aby zabrali miesto uvoľnené na začiatku poľa.

Zásobník vám umožňuje odkazovať na údaje o histórii zmien hodnôt premenných. Základom programovania je popis údajov a algoritmov. Zásobník je základom pre prenos kontroly medzi funkciami, organizovanie rekurzie a odkazov na parametre. Syntax a sémantika JavaScriptu prostredníctvom metód pole push() a pop () dávajú schopnosť manipulovať s významom a brať do úvahy časový faktor. Zvláštnosť jazyka prehliadača a jeho logika nám umožňujú pozerať sa inak na možnosti faktora času.

Dátové pole a logika jeho tvorby

Stačí opísať premennú. Nie je ťažké vytvoriť pole premenných. Algoritmus využívajúci údaje je statické a jednoduché riešenie problému. Klasická manipulácia s údajmi:

  • opísať (vytvoriť) premennú;
  • priradiť hodnotu;
  • zmeniť hodnotu;
  • odstrániť premennú.

Funkcie push () a pop () vám umožňujú zmeniť povahu premenných a ich použitie. Myšlienka zásobníka sa od svojho „zrodenia“ nezmenila, ale zvláštnosť JS ako jazyka prehliadača a moderná koncepcia programovania vám umožňuje vziať do úvahy časový faktor a dať dynamiku údajom.

Hodnota funkcie ") - pridať niečo na koniec poľa. Funkcia - získať posledný prvok poľa. Ukazovateľ v kontexte push / pop sa po pridaní presunie na pridaný prvok, keď sa načíta, na predposledný prvok, a posledný prvok je výsledkom operácie.

Stoh tanierov – tradičný popis stohu v JavaScripte – naberá nový význam. Nech je premennou vždy pole. Samotné pole je kolekciou premenných, ale ak vezmeme do úvahy premennú ako pole, môžete sa na dynamiku zmeny jej hodnôt pozerať inak.

Pohyb podľa hodnôt

Podstata zásobníka – prišiel posledný, prvý odišiel. Z tejto objednávky nemôžete extrahovať hodnotu. Pri prísnom dodržaní tohto pravidla, berúc do úvahy hodnoty celého poľa ako jednej premennej, môžete získať dynamiku zmien hodnôt tejto premennej v priebehu času.

V tomto príklade je pridanie hodnôt poľa JS array.push (...) jednou sekvenciou akcií, načítanie hodnôt poľa JS pop () je ďalšou sekvenciou. Oba postupy spolu súvisia. To znamená, že aktívny prvok mení svoju hodnotu nielen v čase, ale aj v logike svojej zmeny.

Rekurzia a dynamika hodnôt

Ak sa funkcia môže volať sama a bezpečne plniť svoj účel, je to plná funkčnosť. Jednoduchým príkladom je tabuľka. V tabuľke môžu byť ďalšie tabuľky. A každá tabuľka obsahuje riadky, stĺpce a bunky. Každá bunka môže obsahovať tabuľku. Niekoľko buniek po riadkoch alebo stĺpcoch je možné spojiť do jednej bunky, ktorá môže obsahovať tabuľku. Tabuľka v bunke môže obsahovať bunku s dvoma alebo viacerými tabuľkami.

Je takmer nemožné implementovať to, čo bolo povedané v klasickom programovacom štýle, ale v rekurzívnom štýle je to elementárne. Ak sa funkcionalita algoritmu na prácu s tabuľkou umožňuje implementovať do ľubovoľnej bunky, ide o JS array push. V JavaScripte má tento „trik“ zvláštny význam. Tabuľky sú na mieru. Strom stránky (DOM) je dielo na stránke.

Na prvky DOM(značky stránky) obslužné programy visia. Jedna možnosť, keď sa takýto handler spustí raz, je úplne iná možnosť, keď sa môže mnohokrát privolať. V kontexte všetkých handlerov všetkých prvkov stránky sa získa dynamika stránky v čase.

Push / pop a rekurzia sú trochu inou predstavou o logike stránky: všetko sa mení podľa potreby v aktuálnej situácii a nie je vopred naprogramované vo forme postupného spracovania akcií návštevníka.

Polia môžu byť manipulované pomocou rôznych metód poskytovaných konštruktorom Array.

Pop / push a shift / unshift metódy

Zvážte metódy pop () a push (). Tieto metódy vám umožňujú pracovať s poliami, ako sú zásobníky. Zásobník je dátová štruktúra, v ktorej je prístup k prvkom organizovaný podľa princípu LIFO (anglicky last in - first out, "last in - first out"). Princíp stohu sa dá prirovnať k stohu tanierov: ak chcete vybrať druhý zhora, musíte odstrániť horný. Ako to funguje je znázornené na obrázku:

A tak sa vráťme k úvahám o metódach push () a pop (). Metóda push () pridá jeden alebo viacero nových prvkov na koniec poľa a vráti jeho novú dĺžku. Metóda pop () - odstráni posledný prvok poľa, skráti dĺžku poľa a vráti hodnotu, ktorú odstránil. Všimnite si, že obe tieto metódy upravujú pole na mieste, namiesto vytvárania jeho modifikovanej kópie.

Var foo =; // foo: foo.push (1,2); // foo: Vráti 2 foo.pop (); // foo: Vráti 2 foo.push (3); // foo: Vráti 2 foo.pop (); // foo: Vráti 3 foo.push (); // foo:] Vráti 2 foo.pop () // foo: Vráti foo.pop (); // foo: Vráti 1 var ovocie = ["hrušky", "banány", "jablká"]; var vybral = ovocie.pop (); document.write ("Vybral si moju" + vybral); Skús"

Metódy shift () a unshift () sa správajú veľmi podobne ako pop () a push (), okrem toho, že vkladajú a odstraňujú prvky na začiatku poľa. Metóda unshift () posúva existujúce prvky smerom k väčším indexom, aby sa vytvoril priestor pre nové prvky, pridáva jeden alebo viac prvkov na začiatok poľa a vracia novú dĺžku poľa. Metóda shift () odstráni prvý prvok poľa a vráti jeho hodnotu, pričom posunie všetky nasledujúce prvky tak, aby zaberali voľné miesto na začiatku poľa.

Var f =; // f: f.unshift (1); // f: Vráti: 1 f.unshift (22); // f: Vráti: 2 f.shift (); // f: Vráti: 22 f.unshift (3,); // f:, 1] Vráti: 3 f.shift (); // f: [, 1] Vráti: 3 f.shift (); // f: Vráti: f.shift (); // f: Vráti: 1

Metóda spojenia

Metóda Array.join () sa používa na spojenie prvkov poľa do jedného reťazca. Metóde možno odovzdať voliteľný argument reťazca, ktorý sa použije na oddelenie prvkov v reťazci. Ak nie je zadaný žiadny oddeľovač, predvoleným znakom oddeľovača je pri volaní metódy čiarka.

Var a = ["Vietor", "Dážď", "Oheň"]; var myVar1 = a.join (); // "Vietor, dážď, oheň" var myVar2 = a.join (","); // "Vietor, dážď, oheň" var myVar3 = a.join ("+"); // "Vietor + dážď + oheň" document.write (myVar1 + "
"+ myVar2 +"
"+ myVar3); Skúste"

Metóda Array.join () je opakom metódy String.split (), ktorá vytvára pole rozdelením reťazca na časti.

Obrátená metóda

Metóda Array.reverse () obráti poradie prvkov v poli a vráti pole s preusporiadanými prvkami. Táto metóda nevytvára nové pole s preusporiadanými prvkami, ale mení ich poradie v už existujúcom poli.

Var myArr = ["jeden", "dva", "tri"]; document.write (myArr.reverse ()); Skús"

Metóda concat

Metóda Array.concat () vytvorí a vráti nové pole obsahujúce prvky pôvodného poľa, na ktorom bola zavolaná metóda concat (), postupne doplnené hodnotami všetkých argumentov odovzdaných metóde concat (). Ak je niektorý z týchto argumentov sám osebe poľom, pridajú sa všetky jeho prvky. Názvy polí sa používajú ako argumenty a sú špecifikované v poradí, v akom chcete spojiť ich prvky.

Var a =; a.concat (4, 5) // Vráti a.concat (); // to isté - vráti a.concat (,) // Vráti

Spôsob triedenia

Metóda Array.sort () triedi prvky poľa na mieste a vracia zoradené pole. Ak sa metóda sort () zavolá bez argumentu, zoradí prvky poľa abecedne (dočasne ich skonvertuje na reťazce na porovnanie). Metóda sort () môže mať ako argument porovnávaciu funkciu, ktorá určuje poradie triedenia položiek.

Var a = ["Kiwi", "Pomaranče", "Hrušky"]; a.triediť (); var s = a.join (","); // Pomaranče, Hrušky, Kivi document.write (s); // príklad s číslami var myArr =; myArr.sort (); document.write (myArr); // 1,10,2 Skúste to "

Pravdepodobne ste čakali, že pri triedení čísel uvidíte trochu iný výsledok. K tomuto druhu triedenia dochádza, pretože metóda sort () triedi prvky tak, že ich konvertuje na reťazce. Preto majú poradie reťazcov - koniec koncov "10"

Ak chcete triediť v akomkoľvek inom neabecednom poradí, môžete zadať porovnávaciu funkciu ako argument metóde triedenia (). Pamätajte však, že porovnávaciu funkciu musíte napísať sami. Táto funkcia musí mať dva parametre, pretože nastavuje, ktorý z jej dvoch argumentov sa má objaviť ako prvý v zoradenom zozname. Na uľahčenie pochopenia a napísania takejto funkcie existuje niekoľko pravidiel, podľa ktorých bude poradie prvkov určené:

  • Ak musí prvý argument predchádzať druhému, porovnávacia funkcia vráti záporné číslo (ak a
  • Ak prvý argument musí nasledovať za druhým, potom porovnávacia funkcia vráti kladné číslo (ak a> b)
  • Ak sú tieto dve hodnoty rovnaké (t. j. poradie nie je dôležité), porovnávacia funkcia vráti 0 (ak a == b)

Na porovnanie funkcia používa prvky poľa ako svoje argumenty:

Funkcia foo (a, b) (// definuje testovaciu funkciu, ak (a b) vráti 1; vráti 0; // ak a == b) var a =; a.sort (foo); // ako argument sa odovzdá iba názov funkcie document.write (a.join ("")); // napíš to isté kratšie var a =; a.zoradiť (funkcia (a, b) (// použiť anonymnú funkciu návrat a - b; // funkcia vráti 0)); dokument.písať (a); // 1,2,5,10 Skúste to "

Prvý záznam v príklade je napísaný tak, aby bolo ľahšie pochopiť, ako to funguje. Všimnite si, aké pohodlné je použiť anonymnú funkciu v druhom úryvku. Volá sa len raz, takže nie je potrebné ho pomenovať.

Poznámka: Ak sú v poli nedefinované prvky, zalomia sa na koniec poľa.

Metóda plátkov

Metóda Array.slice () sa používa na skopírovanie špecifikovanej oblasti z poľa a vrátenie nového poľa obsahujúceho skopírované prvky. Toto nezmení pôvodné pole.

Syntax metódy:

Názov poľa.slice (začiatok, koniec);

Názov poľa by sa mal nahradiť názvom poľa, z ktorého chcete získať špecifickú množinu prvkov pre nové pole. Metóda používa dva argumenty, ktoré definujú začiatok a koniec vrátenej časti poľa. Metóda skopíruje časť poľa od začiatku do konca, nezahŕňa koniec. Ak je zadaný iba jeden argument, vrátené pole bude obsahovať všetky prvky od zadanej pozície po koniec poľa. Môžete použiť záporné indexy - počítajú sa od konca poľa.

Var arr =; arr.slice (0,3); // Vráti arr.slice (3); // Vráti arr.slice (1, -1); // Vráti arr.slice (-3, -2); // Návraty

Splice metóda

Metóda Array.splice () je všeobecná metóda na prácu s poľami. Upravuje pole na mieste namiesto toho, aby vrátilo nové upravené pole, ako to robia metódy slice () a concat (). Metóda splice môže odstrániť prvky z poľa, vložiť nové prvky, nahradiť prvky - jeden po druhom a súčasne. Vráti pole odstránených prvkov, ak nebol odstránený žiadny z prvkov, vráti prázdne pole.

Syntax metódy:

Názov poľa.splice (index, množstvo, prvok1, ..., prvokN);

Prvý argument určuje index v poli, od ktorého sa má začať vkladať alebo odstraňovať prvky. Druhý argument nastavuje počet prvkov, ktoré sa majú odstrániť z poľa, počnúc indexom uvedeným v prvom argumente, ak je druhý argument 0, prvky sa neodstránia. Ak je druhý argument vynechaný, odstránia sa všetky prvky poľa od zadaného indexu po koniec poľa. Pri použití záporného čísla pozície sa prvky budú počítať od konca poľa.

Var ovocie = ["pomaranče", "jablká", "hrušky", "hrozno"]; var vymazané = ovocie.splice (2,2); // vráti ["hrušky", "hrozno"] document.write (vymazané); var arr =; arr.splice (4); // Návraty; pole sa zmenilo na: arr.splice (1,2); // Návraty; pole sa zmenilo na: arr.splice (1,1); // Návraty; pole sa zmenilo na: Skúste "

Prvé dva argumenty metódy splice () špecifikujú prvky poľa, ktoré sa majú odstrániť. Po týchto dvoch argumentoch môže nasledovať ľubovoľný počet ďalších argumentov špecifikujúcich prvky, ktoré sa majú vložiť do poľa, počnúc od pozície danej prvým argumentom.

Var ovocie = ["pomaranče", "jablká"]; ovocie.splice (2,0, "vodové melóny"); // vráti document.write (ovocie); // teraz ["pomaranče", "jablká", "vodové melóny"] var arr =; arr.splice (2,0, "a", "b"); // Návraty; sa stal arr.splice (2,2,); // Vráti ["a", "b"]; stalo, 3,4,5] Skúste "

Treba poznamenať, že na rozdiel od concat (), metóda splice () nerozdeľuje polia odovzdané ako argumenty na samostatné prvky. To znamená, že ak sa pole odovzdá metóde na vloženie, vloží pole samotné, nie prvky tohto poľa.

Metóda ToString

Metóda toString () konvertuje prvky poľa na reťazec pomocou čiarky ako oddeľovacieho znaku.

Var arr = ["Mlieko", "Chlieb", "Cookies"]; var jedlo = arr.toString (); dokument.písať (jedlo); // Mlieko, chlieb, sušienky Skúste to “

Všimnite si, že metóda vracia rovnaký reťazec ako join (), keď je volaná bez argumentov.

indexOf a lastIndexOf

Metóda indexOf vracia index prvku, ktorého hodnota sa rovná hodnote odovzdanej metóde ako argument.

Syntax pre metódy indexOf () a lastIndexOf () je:

Názov_poľa.indexOf (položka_vyhľadania, index) Názov_poľa.lastIndexOf (položka_vyhľadania, index)

Prvý argument metódy určuje hodnotu prvku, ktorého index sa má nájsť, druhý argument (voliteľný) určuje index, od ktorého sa má vyhľadávanie začať. Ak existuje niekoľko rovnakých výskytov, vyberie sa najmenší (prvý) index. Ak sa nenájde prvok s požadovanou hodnotou, metóda vráti -1. Vo vnútri metódy sa na vyhľadávanie používa prísne porovnávanie (===).

Var a =; a.indexOf (3); // vráti 2 a.indexOf (3,4); // vráti 6 a.indexOf (35); // vráti -1: neexistuje žiadny prvok s touto hodnotou a.indexOf (2); // jeden

Metóda lastIndexOf () tiež vracia index prvku, ktorého hodnota sa rovná hodnote odovzdanej metóde ako argument. Jediný rozdiel je v tom, že metóda lastIndexOf () vyberá najvyšší (posledný) index.

Var a =; a.lastIndexOf (3); // vráti 7 a.lastIndexOf (35); // vráti -1: neexistuje žiadny prvok s touto hodnotou a.lastIndexOf (2); // 6

Metódy iterátora

Metódy opísané nižšie sú iterátory. Všetky moderné prehliadače na prácu s poľami majú metódy, ktoré sú navrhnuté tak, aby iterovali prvky a vykonali ich rôzne akcie nad nimi. Sú to metódy forEach (), map (), filter (), every (), some, reduction () a reductionRight ().

Iterujú prvky poľa od 0 do dĺžky - 1 a ak prvok existuje, odovzdajú ho funkcii obsluhy spätného volania.

pre každý

Syntax metódy:

ArrayName.forEach (spätné volanie, thisArg)

Prvým argumentom je funkcia spätného volania, ktorú metóda forEach () zavolá pre každý prvok poľa. Implementáciu funkcie volaného handlera si musíte napísať sami. Volaná funkcia musí mať tri parametre: prvý parameter berie hodnotu prvku poľa ako argument, druhý - index prvku a tretí - samotné pole. Ak však chcete použiť iba hodnoty prvkov poľa, môžete napísať funkciu iba s jedným parametrom. Druhý argument, thisArg (voliteľné), bude odovzdaný ako hodnota this.

Var arr =; function foo (value) (var sum = value * this; return document.write (sum + "
");) arr.forEach (foo, 5); // druhý argument bude odovzdaný ako hodnota this // príklad s tromi parametrami var a =; a.forEach (funkcia (el, idx, a) (dokument. napíšte ( "a [" + idx + "] =" + el + "v [" + a + "]
");)); Skúste"

filter

Syntax metódy:

ArrayName.filter (spätné volanie, tentoObjekt)

Metóda filter () vytvorí a vráti nové pole, ktoré bude obsahovať iba tie prvky poľa, pre ktoré volanie funkcie spätného volania vráti hodnotu true.

Funkcia isBig (prvok, index, pole) (// vráti čísla, ktoré sú väčšie alebo rovné 10, vráti (prvok > = 10); // ak je hodnota prvku väčšia alebo rovná 10, výraz vráti hodnotu true) var filter = .filter (isBig) ; // filtrované

mapa

Metóda map () vytvorí a vráti nové pole, ktoré bude pozostávať z výsledkov volania funkcie spätného volania (item, idx, ar) pre každý prvok v poli.

Var a =; var b = a.map (funkcia (položka, idx, arr) (vrátenie položky * položka;)); // b =

každý a niektorí

Každá metóda () vráti hodnotu true, ak pre všetky prvky poľa zadaná funkcia použitá na ich testovanie vráti hodnotu true.

Metóda some () vráti hodnotu true, ak počas overovania v zadanej funkcii jeden alebo viacero prvkov vráti hodnotu true.

Var a =; a.every (funkcia (x) (návrat x 10;)) // pravda: jedno číslo> 10

znížiť a znížiťSprávne

Syntax metódy:

ArrayName.reduce (spätné volanie, initialValue) ArrayName.reduceRight (spätné volanie, initialValue)

Metóda redukcie () aplikuje zadanú funkciu (spätné volanie) na dve hodnoty v poli naraz, pričom sa iteruje cez prvky zľava doprava, pričom sa zachová medzivýsledok.

Argumenty funkcie spätného volania: (previousValue, currentItem, index, pole)

  • previousValue – návratový výsledok funkcie spätného volania (známy ako medzivýsledok)
  • currentItem - aktuálna položka v poli (položky sa postupne opakujú zľava doprava)
  • index - index aktuálneho prvku
  • pole - pole, ktoré sa spracováva

initialValue Objekt použitý ako prvý argument prvého volania funkcie spätného volania. Zjednodušene povedané, hodnota previousValue sa rovná initialValue pri prvom volaní. Ak neexistuje žiadna počiatočná hodnota, potom sa rovná prvému prvku poľa a iterácia začína od druhého:

Var a =; funkcia foo (prevNum, curNum) (sum = prevNum + curNum; alert (sum); return sum;) var result = a.reduce (foo, 0); dokument.písať (výsledok); Skús"

Pozrime sa, ako tento príklad funguje. Prvé argumenty, ktoré treba hľadať, sú:

  • prevNum = 0 (keďže initialValue je 0)
  • curNum = 1 (aktuálny prvok je 1. prvok poľa)

Číslo 0 sa pripočíta k 1. Tento výsledok (súčet: 1) bude odovzdaný ako prevNum pri ďalšom spustení funkcie. A tak ďalej, kým nepríde k poslednému prvku. Vrátený výsledok - súčet z posledného behu bude 15 (1 + 2 + 3 + 4 + 5).

Metóda reductionRight funguje podobne ako metóda redukcie, ale prechádza cez pole sprava doľava:

Var a = ["h", "o", "m", "e"]; panel funkcií (prevStr, curItem) (návrat prevStr + curItem;) document.write (a.reduceRight (bar)); // emo