Push javascript príklady. Polia

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 hranaté zátvorky. 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 posunutím 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 náhodnej hodnoty z poľa arr:

var arr = ["Slivka","Pomaranč","Somár","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 cez pole vykonáva pomocou cyklu for:

var ovocie = ["Ananás", "Citrón", "Jablko", "Pomaranč", "Peach"] 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 v prípade, že neexistuje:

ddClass(obj, "new") // obj.className="otvoriť menu nové" 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č oreže pole.

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 je 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 počnúc indexom 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čí 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ý)

Upozorňujeme, ž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 napríklad 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.

v javascripte. Tu budeme pokračovať v zoznámení sa s Arrays. Poďme sa porozprávať o vlastnosti length – ako viete: koľko prvkov obsahuje pole?

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

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

V skutočnosti je pole objekt pozostávajúci z určitého počtu rôznych prvkov.

Vlastnosť length vám oznámi počet prvkov v poli.

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

Poďme zistiť a zobraziť počet prvkov poľa. Aby ste to dosiahli, ako vidíte v príklade nižšie, musíte vytvoriť premennú, ktorej hodnotou bude pole, ktoré nás zaujíma, a pre ktorú je zase š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 count sme teda umiestnili číslo, ktoré sa rovná počtu prvkov poľa.

Takto funguje vlastnosť dĺžky.

Metóda push pridá prvok 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á prvok na koniec poľa. Vyzerá to takto:

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

Jacob

Na otestovanie metódy push vo vyššie uvedenom príklade sme vytlačili počet prvkov poľa priateľov pomocou vlastnosti length – bolo ich 5. Potom sme vytlačili celé pole priateľov, ako aj posledný prvok poľa .

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

unshift metóda – pridáva prvok na začiatok poľa.

Tu budeme opäť odkazovať 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, vytlačili sme počet prvkov poľa priateľov pomocou vlastnosti length, potom sme vytlačili celé pole priateľov a tiež prvý prvok poľa (nezabudnite, že číslovanie prvkov poľa začína od 0) .

Teraz, ako môžete vidieť, prvok bol pridaný na začiatok poľa!

pop metóda - odstraňuje posledný prvok z poľa.

A opäť pracujeme s "Friends" Array

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

Nasťa, Grigorij, Vjačeslav

Vjačeslav

Na ilustráciu práce metódy pop sme opäť zobrazili počet prvkov poľa pomocou vlastnosti length, potom sme zobrazili celé pole priateľov – tentoraz bez odstránenia posledného prvku.

Tiež vynesené posledný prvok novovytvorené Array . Aby sme zobrazili posledný prvok pomocou vlastnosti length, zobrali sme celkový počet zostávajúcich prvkov v poli (3) a odčítali sme od neho 1. Vypíšeme teda posledný prvok poľa s číslom 2. Ale toto je tretí prvok, keďže číslovanie v poli začína 0!!!

metóda posunu - odstraňuje prvý prvok z poľa.

Pred nami, ako predtým, je pole „Friends“.

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

Počet prvkov v poli je 3

Grigorij, Vjačeslav, Alexej

Gregory

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

Tiež vynesené prvý prvok poľa. Číslovanie v poli začína od 0!!!

Dovoľte mi pripomenúť vám a len pre seba zaujímavý bod tento článok!

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

Už sme sa tomu venovali v téme.

dobrá možnosť Ilustráciou tohto bodu bude pokračovanie príkladu z bodu 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 polí začína od 0. A ako môžete vidieť z tohto príkladu, číslo 7. prvku poľa je číslo 6.

Na konci tejto témy tiež urobíme domáca úloha. A znova, skúste to vyriešiť sami.

Domáca úloha na odstránenie z... a pridanie prvkov do poľa v Javascripte je nasledovná:

1. Vytvorte pole s ovocím: pomaranč, banán, hruška.
2. Zobrazte koľko tento moment máte ovocie v poli.
3. Pomocou metód naučených v predchádzajúcej lekcii pridajte dve ovocie, jablko a ananás, na koniec poľa a grapefruit na začiatok poľa.
4. Zobrazte, koľko ovocia máte momentálne v poli.
5. Pomocou metód naučených 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

V košíku mám teraz 3 druhy ovocia

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

V košíku mám teraz 6 druhov ovocia

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

V košíku mám teraz 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 mať rôzne typy. 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 v JavaScripte 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 prerozdeľovať pamäť, keď sa ich veľkosť zmení.

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ázdny = ; // 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 voliteľnú koncovú čiarku, t.j. doslovné [,] zodpovedá poľu s dvoma prvkami, nie tromi.

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

    Zavolajte konštruktor bez argumentov:

    Var arr = new Array();

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

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

    Var arr = new Array(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 zadajte v konštruktore volanie hodnôt prvých dvoch alebo viacerých prvkov poľa alebo jedného nečíselného prvku:

    Var arr = new Array(5, 4, 3, 2, 1, "test");

    V tomto prípade sa argumenty konštruktora stanú hodnotami prvkov nového poľa. Používanie literálov poľa je takmer vždy jednoduchšie ako používanie konštruktora Array() ako je tento.

Čítanie a zápis prvkov poľa

Prvky poľa sú prístupné pomocou . Naľavo od zátvoriek musí byť odkaz na pole. V zátvorkách musí byť ľubovoľný výraz, ktorý vráti nezápornú celočíselnou hodnotu. 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 prvku 0 var value = arr; // Zápis hodnoty do prvku 1 arr = 3,14; // Zápis hodnoty do prvku 2 i = 2; arr[i] = 3; // Zápis hodnoty do prvku 3 arr = "hello"; // Čítanie prvkov 0 a 2, zápis hodnoty do prvku 3 arr] = arr;

Dovoľte mi pripomenúť, že polia sú špecializovaným druhom objektov. Hranaté zátvorky používané na prístup k prvkom poľa fungujú presne ako hranaté zátvorky používané na prístup k vlastnostiam objektu. Interpret 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 bolo vytvorené vyššie s jedným prvkom. Potom priradil hodnoty svojim prvkom na indexoch 1, 2 a 3. V dôsledku týchto operácií sa hodnota vlastnosti length poľa zmenila na 4.

Mali by ste jasne rozlišovať medzi indexmi poľa a názvami vlastností objektov. Všetky indexy sú názvy vlastností, ale iba vlastnosti s názvami reprezentovanými celými číslami sú indexy. Všetky polia sú objekty a môžete k nim pridať vlastnosti s ľubovoľnými názvami. Ak sa však dotknete vlastností, ktoré sú indexmi poľa, polia reagujú tak, že podľa potreby aktualizujú hodnotu vlastnosti length.

Upozorňujeme, že ako indexy poľa je povolené používať 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 unshift(), ktorý presúva existujúce prvky v poli na vyššie pozície indexu.

Prvky poľa je možné odstrániť pomocou operátora delete, rovnako ako bežné vlastnosti objektu:

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

Odstránenie prvku je podobné (ale mierne odlišné) ako priradenie nedefinovaného prvku k tomuto prvku. Všimnite si, že aplikovanie operátora delete na prvok poľa nemení hodnotu vlastnosti length, ani neposúva nadol prvky s vyššími indexmi, aby sa vyplnila prázdna medzera po odstraňovanom prvku.

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

Nakoniec existuje viacúčelová metóda spoj (), ktorý umožňuje vkladať, odstraňovať 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é“ multidimenzionálne polia, ale je dobré ich napodobniť s poliami polí. Na prístup k dátovému prvku 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 ku konkrétnemu číslu v poli môžete použiť výraz matica[x][y]. Nasleduje konkrétny príklad, kde sa ako násobiaca tabuľka používa dvojrozmerné pole:

// 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 množstvo užitočný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.

join() metóda

Metóda Array.join() konvertuje všetky prvky poľa na reťazce, zreťazí ich a vráti výsledný reťazec. Do metódy môžete zadať reťazec ako voliteľný argument, ktorý sa použije na oddelenie prvkov vo výslednom reťazci. Ak nie je zadaný 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"

metóda reverse().

Metóda Array.reverse() obráti poradie prvkov v poli a vráti preusporiadané pole. Permutácia sa vykonáva 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 fragment, ktorý používa metódy reverse() a join(), vedie k reťazcu „3,2,1“:

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

metóda sort().

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á v abecednom poradí (prvky sa v prípade potreby dočasne skonvertujú na reťazce na porovnanie). Nedefinované prvky sa presunú na koniec poľa.

Ak chcete triediť v inom ako abecednom poradí, môžete metóde sort() odovzdať funkciu porovnávania ako argument. Táto funkcia nastavuje, ktorý z jej dvoch argumentov má byť v triedenom zozname prvý. Ak musí byť prvý argument pred druhým, 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. ich 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 poradia zoradenia a a b)); // Zoradiť spätne, od najväčšieho po najmenšie 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 concate().

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 sám o sebe poľom, jeho prvky sa pridajú do vráteného poľa. Treba však poznamenať, že neexistuje žiadna rekurzívna transformácia poľa 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); // Návrat arr.concat(); // Vráti arr.concat(,) // Vráti arr.concat(4, ]) // Vráti ]

metóda slice().

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 fragmentu. Vrátené pole obsahuje prvok, ktorého číslo je zadané v prvom argumente, plus všetky nasledujúce prvky až po (okrem iného) prvok, ktorého číslo je zadané 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. Argument -1 teda zodpovedá poslednému prvku poľa a argument -3 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); // Návrat

metóda splice().

Metóda Array.splice() je všeobecná metóda, ktorá vkladá alebo odstraňuje prvky 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 sa podľa potreby posúvajú, aby vytvorili súvislú sekvenciu po inzercii alebo delécii.

Prvý argument metódy splice() špecifikuje pozíciu v poli, z ktorej sa vykoná vkladanie a/alebo mazanie. 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 neboli odstránené žiadne prvky) prázdne pole.

Prvé dva argumenty metódy splice() určujú prvky poľa, ktoré sa majú odstrániť. Po týchto argumentoch môže nasledovať ľubovoľný počet voliteľných argumentov, ktoré určujú 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 ; arr = arr =; arr.splice(2,0,"a","b"); // Vráti ; 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, nie vytvárajú jeho upravenú kópiu.

metódy unshift() a shift().

Metódy unshift() a shift() sa správajú podobne ako push() a pop(), až na to, že vkladajú a odstraňujú prvky na začiatok poľa, nie na koniec. Metóda unshift() posúva existujúce prvky smerom k vyšším indexom, aby uvoľnila 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 nadol, aby sa vyplnilo voľné miesto na začiatku poľa.

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

Zdroj tohto interaktívneho príkladu je uložený v úložisku GitHub. Ak by ste chceli prispieť k projektu interaktívnych príkladov, naklonujte https://github.com/mdn/interactive-examples a pošlite nám žiadosť o stiahnutie.

Syntax

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

Parametre

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

návratová hodnota

Príklady

Pridávanie prvkov do poľa

Nasledujúci kód vytvorí športové pole obsahujúce dva prvky a potom k nemu pripojí dva prvky. Celková premenná obsahuje novú dĺžku poľa.

Let sports = ["futbal", "baseball"] nech total = sports.push("futbal", "plávanie") console.log(sports) // ["futbal", "baseball", "futbal", "plávanie" "] console.log(total) // 4

Zlúčenie dvoch polí

Tento príklad používa apply() na vloženie všetkých prvkov z druhého poľa.

Do nie túto metódu použite, ak je druhé pole (v príklade moreVegs) veľmi veľké, pretože maximálny počet parametrov, ktoré môže jedna funkcia prijať, je v praxi obmedzený. Ďalšie podrobnosti nájdete v časti Apply().

Nech zelenina = ["paštrnák", "zemiak"] nech viacVegs = ["zeler", "červená repa"] // Zlúčiť druhé pole do prvého // Ekvivalent k vegetables.push("zeler", "cvikla") Array.prototype.push.apply(zelenina, viacVegs) console.log(zelenina) // ["paštrnák", "zemiak", "zeler", "cvikla"]

Použitie objektu spôsobom podobným poli

Ako už bolo spomenuté vyššie, push je zámerne všeobecný a môžeme to využiť vo svoj prospech. Array.prototype.push môže fungovať na objekte v pohode, ako ukazuje tento príklad.

Všimnite si, že nevytvárame pole na uloženie kolekcie objektov. Namiesto toho ukladáme kolekciu na samotnom objekte a používame call na Array.prototype.push, aby sme oklamali metódu, aby si myslela, že máme do činenia s poľom. jednoducho funguje vďaka spôsobu, akým nám JavaScript umožňuje vytvoriť kontextové spustenie, akokoľvek chceme.

Nech obj = ( length: 0, addElem: function addElem(elem) ( // obj.length sa automaticky zvýši // pri každom pridaní prvku. .push.call(this, elem) ) ) // Let's add niektoré prázdne objekty len na ilustráciu.obj.addElem(()) obj.addElem(()) console.log(obj.length) // → 2

Všimnite si, že hoci obj nie je pole, metóda úspešne zvýšila vlastnosť dĺžky obj, ako keby sme mali do činenia so skutočným poľom.

technické údaje

Špecifikácia Postavenie Komentujte
ECMAScript 3. vydanie (ECMA-262) štandardná počiatočná definícia. Implementované v JavaScripte 1.2.
ECMAScript 5.1 (ECMA-262)
štandardná
ECMAScript 2015 (6. vydanie, ECMA-262)
Definícia "Array.prototype.push" v tejto špecifikácii.
štandardná
Najnovší koncept ECMAScript (ECMA-262)
Definícia "Array.prototype.push" v tejto špecifikácii.
Návrh

Kompatibilita prehliadača

Tabuľka kompatibility na tejto stránke je vygenerovaná zo štruktúrovaných údajov. Ak by ste chceli prispieť k údajom, pozrite si https://github.com/mdn/browser-compat-data a pošlite nám žiadosť o stiahnutie.

Aktualizujte údaje o kompatibilite na GitHub

DesktopMobilnéserver
ChromehranaFirefoxinternet ExplorerOperasafariandroid webviewChrome pre AndroidFirefox pre AndroidOpera pre AndroidSafari na iOSInternet SamsungNode.js
tlačiťPlná podpora prehliadača Chrome 1Úplná podpora Edge 12Plná podpora Firefoxu 1IE Plná podpora 5.5Opera Plná podporaÁnoPlná podpora Safari 1WebView Plná podpora Androidu ÁnoChrome Plná podpora pre Android 18Firefox Plná podpora pre Android 4Opera Android Plná podpora ÁnoSafari iOS Plná podpora 1Plná podpora Samsung Internet Android Ánonodejs Plná podpora Áno

Zásobník vám umožňuje odkazovať na údaje o histórii zmien hodnôt premenných. Opis údajov a algoritmov je jadrom programovania. 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 push pole() a pop() umožňujú manipulovať s významom a brať do úvahy časový faktor. Zvláštnosť jazyka prehliadača a jeho logika nám umožňujú iný pohľad na možnosti časového faktora.

Dátové pole a logika jeho tvorby

Stačí deklarovať premennú. Je ľahké vytvoriť pole premenných. Algoritmus, ktorý používa dáta, 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 zrodu nezmenila, ale zvláštnosť JS ako jazyka prehliadača a moderná koncepcia programovania vám umožňuje vziať do úvahy časový faktor a poskytnúť dynamiku údajov.

Function value") - pridať niečo na koniec poľa. Function - extrahovať posledný prvok poľa. Pri pridávaní sa ukazovateľ v kontexte push / pop presunie na pridaný prvok, pri extrakcii - 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. Pole je v skutočnosti zbierka premenných, ale ak vezmeme do úvahy premennú ako pole, môžete sa pozrieť na dynamiku zmeny jej hodnôt odlišne.

Pohybujte sa podľa hodnôt

Podstata stohu - prišiel posledný, prvý odišiel. Nemôžete získať hodnotu mimo danej objednávky. Presne podľa tohto pravidla, berúc do úvahy hodnoty celého poľa ako jednu premennú, môžete získať dynamiku zmien hodnôt tejto premennej v priebehu času.

V tomto príklade je pridanie hodnôt pole.push(...) JS jednou sekvenciou akcií, načítanie hodnôt pop() poľa JS je ďalšou sekvenciou. Obe možnosti 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. Viaceré bunky podľa riadku alebo stĺpca možno zlúčiť do jednej bunky, ktorá môže obsahovať tabuľku. Tabuľka v bunke môže mať bunku s dvoma alebo viacerými tabuľkami.

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

Na prvky DOM(značky stránky) obslužné programy visia. Jedna možnosť je, keď takýto psovod vystrelí raz, úplne iná možnosť je, keď sa môže mnohokrát privolať. V kontexte všetkých obslužných programov 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í tak, ako to vyžaduje aktuálna situácia a nie je vopred naprogramované vo forme postupného spracovania akcií návštevníka.