JavaScript objekat Array
JavaScript niz je u stvari objekat! To znači da nije obična struktura podataka, već da ima i svoja svojstva i metode.
Provera tipa | |
---|---|
Array.isArray(obj) | Vraća TRUE ako je zadati objekat JavaScript niz. |
Dužina niza | |
a.length | Broj elemenata niza. |
Dodavanje i uklanjanje elemenata | |
a.push(E) | Dodaje jedan ili više novih elemenata na kraj niza. |
a.pop() | Uklanja poslednji elemenat niza i vraća ga rezultat. |
a.unshift(E) | Dodaje jedan ili više novih elemenata na početak niza. |
a.shift() | Uklanja prvi elemenat niza i vraća ga kao rezultat. |
a.splice(I,N,E1,E2,...) | Uklanja N elemenata počev od indeksa I i umesto njih ubacuje elemente E1, E2... |
Redosled elemenata | |
a.reverse() | Obrće redosled elemenata niza. |
a.sort(F) | Sortira niz. |
Deljenje i spajanje | |
a.concat(A1,A2,...) | Nadovezuje nizove A1, A2... |
a.slice(P,K) | Vraća kopiju niza počev od indeksa P do indeksa K |
Konverzija niza u string | |
a.join(S) | Vraća string u kome su elementi niza odvojeni separatorom S. |
a.toString() | Vraća string u kome su elementi niza odvojeni zarezom. |
Pretraživanje niza | |
a.indexOf(V,P) | U nizu pronalazi prvi elemenat sa vrednošću V, počev od indeksa P i vraća njegov indeks. |
a.lastIndexOf(V,P) | U nizu pronalazi poslednji elemenat sa vrednošću V, počev od indeksa P i vraća njegov indeks. |
Iteratori | |
a.forEach(F) | Za svaki elemenat niza samo poziva callback funkciju F. |
a.filter(F) | Vraća niz "ispravnih" elemenata. Za svaki elemenat poziva funkciju F koja vraća true ako je "ispravan". |
a.map(F) | Za svaki elemenat niza poziva funkciju F i vraća niz koji se sastoji iz vraćenih vrednosti funkcije F. |
a.every(F) | Validira elemente niza i vraća true ako su svi "ispravni". Za svaki elemenat poziva funkciju F koja vraća true ako je "ispravan". |
a.some(F) | Validira elemente niza i vraća true ako je bar jedan "ispravan". Za svaki elemenat poziva funkciju F koja vraća true ako je "ispravan". |
a.reduce(F) | Vraća agregirajuću vrednost. Za svaki elemenat poziva funkciju F i prosleđuje joj ukupni dotadašnji rezultat i sam elemenat. |
a.reduceRight(F) | Isto kao reduce() s tim što prolazi kroz niz od poslednjeg ka prvom elementu. |
Dužina niza
Svaki niz ima svojstvo length, pomoću koga možemo da pročitamo, ali i postavimo novu veličinu niza. U najvećem broju slučajeva, koristićemo ovo svojstvo za čitanje, kako bismo znali koiko niz ima elemenata.
Ne zaboravite, ovo je broj elemenata niza, a ne indeks poslednjeg elementa. To znači da je indeks poslednjeg uvek za 1 manji od vrednosti svojstva length. Dakle, ako imamo članove niza:
a[0], a[1], a[2] , a[3], a[4]
Vrednost svojstva length je:
a.length --> 5
Povećavanjem vrednosti svojstva length, nećemo zaista povečati broj elemenata niza, ali njegovim smanjenjem možemo da "skratimo" niz. Jedan od načina za pražnjenje niza je postavljanje ovog svojstva na nulu.
a.length = 0
Primer
var a = [5, 10, 3, 6, 22];
for (var i=0; i<a.length; i++) {
console.log(i + ": " + a[i]);
}
U prikazanom primeru koristimo svojstvo length da bismo prošli kroz sve članove niza. Ciklus se "vrti" počev od nultog elementa pa do poslednjeg koji je manji od broj članova niza (a.length).
Inače u svakoj iteraciji ciklusa, u konzoli web čitača ispisujemo indeks i vrednost elementa niza.
Provera da li je objekat tipa Array
Sam objekat Array ima zgodan metod isArray(), kojim možemo da proverimo da li je neki zadati objekat niz ili ne. Ovo je statički metod, tj. ne poziva se iz nekog objekta niza, već za sam Array, a niz (tj. objekat koji proveravamo) se zadaje kao parametar.
Array.isArray(a)
Ako je objekat niz, pa makar i prazan, dobićemo rezultat TRUE.
Primer
var a = [5, 10, 3, 6, 22];
if (a.length) { // u ovom slučaju će raditi, ali izbegavajte taj način
// ...
}
// ovo je ispravno
console.log(Array.isArray(a)); // true
console.log(Array.isArray([])); // true
console.log(Array.isArray("Pera")); // false
console.log(Array.isArray(["Pera"])); // true
// alternativno, za jako stare web čitače
if( Object.prototype.toString.call( niz ) === '[object Array]' ) {
// ...
}
- T. Valentine, J. Reid (2013): JavaScript Programmer's Reference, Apress, New York
- A. Pehlivanian, D. Nguyen (2013): Jump Start JavaScript, SitePoint Pty. Ltd., Collingwood
- Mozilla Developer Network, Array