Deo zbornika Učimo Javascript
Metode niza u Javascriptu
Nizovi u Javascriptu imaju mnoštvo ugrađenih metoda. Neke od metoda, poput sort, su mutatorske, jer menjaju izvorni niz, dok druge vraćaju novu vrednost, a ostavljaju izvorni niz nepromenjen.
slice
Metod slice() vraća podniz, bez modifikovanja izvornog niza. Prvi parametar je početni indeks, a drugi završni (oba indeksa se zasnivaju na nuli). Na primer:
const niz = [1, 2, 3, 4, 5, 6, 7]
console.log(niz.slice(0, 1))
console.log(niz.slice(0, 2))
console.log(niz.slice (1, 3))
console.log(niz) // originalni niz nije isecen
Vidimo da nakon svih „isecanja“, izvorni niz ostaje isti.
splice (mutatorska)
Metod splice() modifikuje izvorni niz, tako što uklanja podniz i vraća ga. Prva dva parametra su početni indeks i dužina (broj elemenata) podniza koji treba ukloniti:
const niz = [1, 2, 3, 4, 5, 6, 7]
console.log(niz.splice(1, 3))
console.log(niz) // originalni niz je isecen
Metod splice() opciono prima dodatne parametre, radi popunjavanja praznine novim elementima:
const niz = [1, 2, 3, 4, 5, 6, 7]
console.log(niz.splice(1, 2, 100, 101, 102, 103))
console.log(niz) // originalni niz je isecen i popunjen
find i findIndex
Ranije je za pretraživanje elemenata niza bilo potrebno izvršiti iteraciju i uporediti svaki element sa vrednošću, jer nisu postojali ugrađeni metodi. Iako su funkcije indexOf() i lastlndexOf() bile korisne za pronalaženje jedne vrednosti, nije postojao način za pronalaženje elementa koji se zasniva na složenim uslovima.
Od verzije ES6, sledeći ugrađeni metodi olakšavaju pretragu niza:
Array.prototype.findArray.prototype.findIndex
Oba metoda prihvataju callback funkciju, koja postavlja predikatski uslov. Na primer:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(numbers.find(n => n > 5))
console.log(numbers.findIndex(n => n > 5))
Array.from
U verziji ES6 uveden je vrlo koristan metod za konvertovanje vrednosti nalik nizu i iterabilnih vrednosti u nizove. Vrednosti nalik nizu imaju svojstvo length i indeksirane elemente.
const ime = "Vatroslav"
console.log(Array.from(ime))