Višedimenzionalni nizovi u JavaScriptu. Svi načini ponavljanja niza u JavaScriptu Pristup elementima višedimenzionalnog niza javascript

03.04.2021 Savjet

Zadnje ažuriranje: 09.04.2018

Nizovi su dizajnirani za rad sa skupovima podataka. Da biste stvorili niz, upotrijebite novi izraz Array():

Var myArray = new Array();

Postoji i kraći način za inicijaliziranje niza:

Var myArray = ;

U ovom slučaju stvaramo prazan niz. Ali možete mu dodati i početne podatke:

Var ljudi = ["Tom", "Alice", "Sam"]; konzola.log(ljudi);

U ovom slučaju, myArray će imati tri elementa. Grafički se to može prikazati ovako:

Indeksi se koriste za pristup pojedinačnim elementima niza. Brojanje počinje od nule, odnosno prvi element će imati indeks 0, a zadnji će imati indeks 2:

Var ljudi = ["Tom", "Alice", "Sam"]; konzola.log(ljudi); // Tom var osoba3 = ljudi; // Sam console.log(person3); //Sam

Ako pokušamo pristupiti elementu s indeksom većim od veličine niza, dobit ćemo nedefinirano:

Var ljudi = ["Tom", "Alice", "Sam"]; konzola.log(ljudi); //nedefiniran

Također, indeks se koristi za postavljanje vrijednosti za elemente niza:

Var ljudi = ["Tom", "Alice", "Sam"]; konzola.log(ljudi); // Tom ljudi = "Bob"; konzola.log(ljudi); //Bob

Štoviše, za razliku od drugih jezika, kao što su C# ili Java, možete instalirati element koji nije prvobitno instaliran:

Var ljudi = ["Tom", "Alice", "Sam"]; konzola.log(ljudi); // nedefinirano - postoje samo tri elementa u nizu people = "Bob"; konzola.log(ljudi); //Bob

Također je vrijedno napomenuti da, za razliku od niza programskih jezika, JavaScript nizovi nisu striktno tipizirani, jedan niz može pohraniti podatke različitih vrsta:

Var objekti = ["Tom", 12, istina, 3.14, laž]; console.log(objekti);

operator širenja

Operator širenja ... omogućuje pojedinačno uzimanje vrijednosti iz niza:

Neka su brojevi = ; console.log(...brojevi); // 1 2 3 4 console.log(numbers); //

Operator širenja naveden je prije niza. Kao rezultat, izraz...numbers će vratiti skup brojeva, ali to neće biti niz, već pojedinačne vrijednosti.

Višedimenzionalni nizovi

Nizovi mogu biti jednodimenzionalni ili višedimenzionalni. Svaki element u višedimenzionalnom nizu može biti zaseban niz. Gore smo pogledali jednodimenzionalni niz, sada kreirajmo višedimenzionalni niz:

Var brojevi1 = ; // jednodimenzionalni niz var brojevi2 = [, ]; // dvodimenzionalni niz

Vizualno se oba niza mogu prikazati na sljedeći način:

Jednodimenzionalni niz brojeva1

Dobiti zasebni element polje, također se koristi indeks:

Var tomInfo = ljudi;

Tek sada će tomInfo varijabla predstavljati niz. Da bismo dobili element unutar ugniježđenog niza, moramo koristiti njegovu drugu dimenziju:

Console.log("Ime: " + ljudi); // Tom console.log("Dob: " + ljudi); // 25

To jest, ako možemo vizualno prikazati dvodimenzionalni niz u obliku tablice, tada će se element ljudi odnositi na ćeliju tablice koja se nalazi na sjecištu prvog retka i drugog stupca (prva dimenzija je 0 - redak, druga dimenzija je 1 - stupac).

Također možemo napraviti zadatak:

Var ljudi = [ ["Tom", 25, netočno], ["Bill", 38, točno], ["Alice", 21, netočno] ]; ljudi = 56; // dodijeli posebnu vrijednost console.log(people); // 56 ljudi = ["Bob", 29, lažno]; // dodijeli niz console.log(people); //Bob

Kada stvaramo višedimenzionalne nizove, nismo ograničeni samo na dvodimenzionalne, već možemo koristiti i nizove viših dimenzija:

Var brojevi = ; brojevi = ; // sada su brojevi dvodimenzionalni niz numbers=; // sada su brojevi trodimenzionalni niz brojeva = 5; // prvi element trodimenzionalnog niza je 5 console.log(numbers);

U prethodnom smo članku govorili o tome što je to i kako s njim raditi. U ovom ćemo članku govoriti o višedimenzionalnom nizu.

Ovo je niz čiji su jedan ili više elemenata također nizovi. Ovisno o dubini deklaracije, posebno se može nazvati dvodimenzionalno polje (2 razine) ili trodimenzionalno polje (3 razine) ili četverodimenzionalno polje (4 razine) i tako dalje.

Najpopularniji, nakon jednodimenzionalnog niza, koji se najčešće koristi je dvodimenzionalni niz. Proučimo ovo detaljnije.


Kao što vidite, elementi dvodimenzionalnog niza su jednodimenzionalni nizovi. Kad bi ti jednodimenzionalni nizovi sadržavali više nizova, tada bi arr niz već bio trodimenzionalan.

Na primjer, stvorimo tri jednostavni nizovi i popunite ih podacima. Prvu ćemo ispuniti parnim brojevima, drugu neparnim brojevima, a treću nekim proizvoljnim podacima.

//Deklariraj tri prazna niza var evenNumbers = new Array(); //Varijabla k - za indekse polja parni brojevi var k = 0; var oddNumbers = new Array(); //Varijabla n - za indekse polja oddNumbers var n = 0; var data = new Array("auto", "avion", istina, 89, "m"); //Ispunite niz parnih brojeva parnim brojevima za (var i = 1; i

Kako biste vidjeli što je unutar niza, možete koristiti alat kao što je konzola.

Na primjer, želimo vidjeti sadržaj niza s neparnim brojevima oddNumbers. Da biste to učinili, napišite sljedeći redak u donjem kodu:

Console.log(oddNumbers);

Da biste vidjeli rezultat, morate otvoriti konzolu u pregledniku. U Google Chrome to se radi ovako: desnom tipkom miša kliknite stranicu i iz kontekstni izbornik odaberite zadnju opciju “View code”, odnosno inspektor. U engleskoj verziji ova opcija se zove Inspect.


A alatna traka za razvojne programere pojavit će se ispod. U njemu morate otići na karticu Konzola.


Sada, kako biste stvorili dvodimenzionalni niz, trebate ga deklarirati i dodati mu jednodimenzionalne nizove koje ste prethodno stvorili.

//Deklarirajte dvodimenzionalni niz twoDimens i ispunite ga var twoDimens = new Array(evenNumbers, oddNumbers, data); console.log(twoDimens);

Pogledajmo sadržaj konzole ovog niza.


ponavljanje preko dvodimenzionalnog niza

Prvo, naučimo kako pristupiti elementima dvodimenzionalnog niza.

Kao i kod pojedinačnih nizova, elementima se pristupa njihovim indeksima.

Na primjer, prikažimo element s indeksom 3 iz niza s neparnim brojevima (oddNumbers). Indeks jednodimenzionalnog niza oddNumbers u dvodimenzionalnom nizu twoDimens je jedan(1).

Document.write("Element na indeksu 3 iz niza neparnih brojeva oddNumbers je: " + twoDimens); // Element: 7

U nizu twoDimens pristupamo elementu s indeksom 1. Element koji je s tim indeksom je niz oddNumbers. I u ovom nizu već pristupamo elementu s indeksom 3, što je broj 7.

Sada prijeđimo na pitanje kako iterirati preko dvodimenzionalnog niza.

Iteracija preko dvodimenzionalnog niza izvodi se pomoću dvostruke petlje. Na primjer, idemo iterirati kroz naše polje twoDimens.

Za(var i = 0; i< twoDimens.length; i++){ for(var j = 0; j < twoDimens[i].length; j++){ document.write("

Element s indeksom " + i + " " + j + " jednak je: " + twoDimens[i][j] + "

"); } }

U prvoj petlji iteriramo preko samog niza twoDimens. U drugoj petlji već iteriramo po samom elementu (nizu). Prvo, varijabla i jednaka je 0. Stoga u drugoj petlji prvo iteriramo po prvom nizu parnih brojeva, koji ima indeks 0. I već unutar druge petlje pristupamo elementima ovog niza. Dakle: dvaDimena[j]. Gdje j varira od 0 do duljine niza parnih brojeva.

Nakon nabrajanja elemenata iz prvog niza, vraćamo se u prvu petlju, povećavamo varijablu i i nastavljamo s nabrajanjem drugog niza oddNumbers, koji ima indeks 1. I tako nabrajamo svaki element dvodimenzionalnog niza twoDimens.

Sada pogledajmo rezultat ove pretrage:


To je sve o čemu sam želio govoriti u ovom članku. Sada znate kako stvoriti dvodimenzionalni niz, kako pristupiti elementima dvodimenzionalnog niza i kako iterirati kroz dvodimenzionalni niz. Nadam se da je sve bilo jasno. Želim vam puno uspjeha!

  • I. Ponavljanje preko realnih nizova
  • forEach metoda i srodne metode
  • za petlju
  • Ispravno korištenje for...in petlje
  • for...of petlja (implicitna upotreba iteratora)
  • Eksplicitna uporaba iteratora
  • Korištenje metoda za ponavljanje stvarnih nizova
  • Pretvori u pravi niz
  • Napomena o objektima vremena izvođenja
I. Nabrajanje realnih nizova On ovaj trenutak Postoje tri načina za ponavljanje elemenata stvarnog niza:
  • metoda Array.prototype.forEach ;
  • klasična for petlja
  • "ispravno" konstruirana for...in petlja.
  • Osim toga, uskoro, s dolaskom novog standarda ECMAScript 6 (ES 6), očekuju se još dvije metode:
  • for...of petlja (implicitna upotreba iteratora);
  • eksplicitna uporaba iteratora.
  • 1. Metoda forEach i srodne metode Ako je vaš projekt dizajniran da podržava značajke standarda ECMAScript 5 (ES5), možete koristiti jednu od njegovih inovacija - metodu forEach.

    Primjer upotrebe:
    var a = ["a", "b", "c"]; a.forEach(funkcija(unos) ( konzola.log(unos); ));
    Općenito, korištenje forEach zahtijeva povezivanje biblioteke emulacije es5-shim za preglednike koji izvorno ne podržavaju ovu metodu. To uključuje IE 8 i novije verzije rane verzije, koji su još tu i tamo u upotrebi.

    Prednost forEach je u tome što nema potrebe za deklariranjem lokalnih varijabli za pohranjivanje indeksa i vrijednosti trenutnog elementa niza, jer se oni automatski prosljeđuju funkciji povratnog poziva kao argumenti.

    Ako ste zabrinuti zbog mogućih troškova povratnog poziva za svaki element, ne brinite i pročitajte ovo.

    ForEach je dizajniran za iteraciju kroz sve elemente niza, ali osim toga, ES5 nudi još nekoliko korisnih metoda za iteraciju kroz sve ili neke elemente plus izvođenje nekih radnji na njima:

    • svaki - vraća istinito ako za svaki element niza povratni poziv vraća vrijednost koja se može pretvoriti u istinito .
    • some - vraća true ako za barem jedan element niza povratni poziv vraća vrijednost koja se može pretvoriti u true.
    • filter - stvara novi niz koji uključuje one elemente izvornog niza za koje povratni poziv vraća true.
    • map - stvara novi niz koji se sastoji od vrijednosti vraćenih povratnim pozivom.
    • smanji - reducira niz na jednu vrijednost, primjenjujući povratni poziv na svaki element niza redom, počevši od prvog (može biti korisno za izračun zbroja elemenata niza i druge funkcije sažetka).
    • reduceRight - radi slično kao reduce, ali ponavlja elemente obrnutim redoslijedom.
    2. Za petlju Dobro staro za pravila:

    Var a = ["a", "b", "c"]; var indeks; za (indeks = 0; indeks< a.length; ++index) { console.log(a); }
    Ako je duljina niza konstantna kroz petlju, a sama petlja pripada odjeljku koda koji je kritičan za performanse (što je malo vjerojatno), tada možete koristiti "optimalniji" verzija za sa pohranjivanjem duljine niza:

    Var a = ["a", "b", "c"]; var indeks, len; za (indeks = 0, dužina = a.duljina; indeks< len; ++index) { console.log(a); }
    U teoriji, ovaj kod bi trebao raditi malo brže od prethodnog.

    Ako redoslijed elemenata nije bitan, onda možete ići i dalje u smislu optimizacije i riješiti se varijable za pohranjivanje duljine niza, mijenjajući redoslijed pretraživanja obrnutim:

    Var a = ["a", "b", "c"]; var indeks; za (index = a.length - 1; index >= 0; --index) ( console.log(a); )
    Međutim, u modernim JavaScript motorima takve igre optimizacije obično ne znače ništa.

    3. Pravilna upotreba for...in petlje Ako vam se savjetuje da koristite for...in petlju, zapamtite da ponavljanje nizova nije ono za što je namijenjeno. Suprotno uobičajenom pogrešnom shvaćanju, petlja for...in ne ponavlja preko indeksa niza, već radije kroz nabrojiva svojstva objekta.

    Međutim, u nekim slučajevima, kao što je ponavljanje preko rijetkih nizova, for...in može biti korisno, sve dok poduzmete mjere opreza, kao što je prikazano u primjeru ispod:

    // a - rijetki niz var a = ; a = "a"; a = "b"; a = "c"; for (var ključ u a) ( if (a.hasOwnProperty(ključ) && /^0$|^\d*$/.test(ključ) && ključ