Elementi JavaScript niza
Da se podsetimo: niz je takva struktura u memoriji, gde pod jednom promenljivom imamo više vrednosti numerisanih rednim brojevima. U JavaScriptu je podrazumevano prvi element niza uvek sa indeksom 0. Tako bi niz sa N elemenata u memoriji izgledao npr. ovako:
Indeks | 0 | 1 | 2 | ... | N-1 |
---|---|---|---|---|---|
Vrednost | "Milan" | "Jovan" | "Petar" | ... | "Zoran" |
Svakom elementu niza pristupamo preko njegovog indeksa koji navodimo u uglastoj zagradi.
a[i] | Element niza a sa indeksom i. |
Tako bismo u prethodnom primeru (pod pretpostavkom da je u pitanju niz a) pristupali članovima niza na sledeći način:
Indeks | 0 | 1 | 2 | ... | N-1 |
---|---|---|---|---|---|
Element | a[0] | a[1] | a[2] | ... | a[N-1] |
Vrednost | "Milan" | "Jovan" | "Petar" | ... | "Zoran" |
Obavezno pravite razliku između sledeće dve stvari:
a1 | Promenljiva koja se zove a1. |
a[1] | Element niza a sa indeksom 1. |
Kada deklarišemo niz, JavaScript neće praviti problem, bez obzira kom elementu mi probali da pristupimo. Ovo je velika stvar za programere koji su radili u drugim jezicima. Kada se niz deklariše, obično mu se navodi broj elemenata i svaki pokušaj pristupa elementu sa indeksom koji prevazilazi taj broj izaziva grešku i prekid rada programa.
Zbog svoje "fleksibilne" prirode, JavaScript (u kome pri deklaraciji čak ni ne moramo da navedemo broj elemenata niza), dozvoljava pristup bilo kom elementu. Štaviše, novi elementi niza se kreiraju prostim navođenjem novog broja indeksa.
Matrice
Kada radimo sa matricama, ne zaboravite da su one u stvari nizovi nizova. Na taj način se i obraćamo svakom elementu:
a[i][j]; // ispravno
a[i,j]; // POGREŠNO - ovo funkcioniše u drugim jezicima, ali ne u JavaScriptu
Asocijativni nizovi
Asocijativni nizovi u JavaScriptu ne postoje! Bar ne u smislu na koji smo navikli u jeziku PHP i sličnim. Indeksi ne mogu biti tekstualni ključevi, već samo celobrojne vrednosti. Možete pomisliti da asocijativni nizovi postoje, pošto je moguće zadati tekstualnu vrednost u uglastim zagradama.
a["kljuc"] = vrednost; // ovo NIJE dodavanje elementa niza
a.kljuc = vrednost; // potpuno ista stvar
Pošto je niz objekat, ovo je u stvari dodavanje novog svojstva objektu niza, a ne dodavanje vrednosti.
Pristup elementima niza
var a = []; // prazan niz
a[0] = 267; // slobodno unosimo vrednost
a[1] = 502; // u ovom trenutku niz ima 2 elementa
a[9] = 331; // novu vrednost unosimo pod bilo kojim indeksom
// u ovom trenutku dužina niza postaje 10
var x = a[100]; // pristup nepostojećem elementu nije greška u JavaScriptu, ali x je undefined
Niz se jednostavno prilagođava tome koje elemente mu zadajemo. U gornjem primeru, elementi niza od a[2] do a[8] se implicitno deklarišu, ali su im vrednosti undefined!
Prolazak kroz elemente niza
Kroz elemente niza najlakše prolazimo brojačkim ciklusom. Ne zabravite da elementi mogu biti i nedefinisani
var a = ["Raja", "Gaja", "Vlaja"]; // niz sa tri elementa (indeksi 0, 1 i 2)
// u konzoli ispisuje jedan po jedan element niza
for (var i=0; i<3; i++) {
console.log( a[i] );
}
Matrica
Kroz elemente niza najlakše prolazimo brojačkim ciklusom. Ne zabravite da elementi mogu biti i nedefinisani
var m = [[25,34], [18,51], [92,44]]; // matrica dimenzije 3x2
// u konzoli ispisuje jedan po jedan element matrice
for (var i=0; i<3; i++) {
for (var j=0; j<2; j++) {
console.log( a[i][j] );
}
}