NIZ I ITERACIJE – JAVASCRIPT

Niz je uređen skup vrijednosti. Vrijednosti unutar niza nazivaju se elementi niza. Svaki element niza ima svoju numerički opisanu poziciju – indeks. Prva vrijednost u nizu ima poziciju s indeksom 0, druga sa 1 itd. Nije obavezno da podaci moraju ići redom po indeksima, već su moguće i praznine unutar niza. Elementi niza mogu biti proizvoljnog tipa i ne moraju svi elementi jednog niza biti istog tipa. Najjednostavnije, niz se može deklarirati tako što se eksplicitno nabroje elementi niza razdvojeni zarezima, unutar uglatih zagrada. Niz se definira s pomoću [] ili new Array().

Iteracije su metode čija je uloga proći kroz sve elemente niza. Neke od “klasičnih” potreba prolaska kroz niz su: izračunavanje vrijednosti, pronalazak potrebne vrijednosti, sortiranje, provjera ispravnosti podataka, zamjena vrijednosti itd.

 

Primjer niza:

 

const niz = ["jabuka", "marelica", "šljiva", "kruška"]

 

Način kretanja (loopanja) kroz niz:

 

  • for (var i = 0; i < niz.length; i++) {
        console.log(niz[i]);
    }
    • tradicionalni način
    • moguće je koristiti break; continue; return;
    • područje djelovanje varijable “i” je cijela funkcija koja okružuje for petlju

 

  • for (const i of niz) {

            console.log(i);

     }

  • ES2016 standard
  • ne uključuje prototipe unutar objekta
  • zamjena za for in
  • omogućava upotrebu naredbi break, continue i return

 

  • niz.forEach(i => {
        console.log(i);
    })
  • ECMA2015 standard
  • izvršava funkciju za svaki element niza (kao i for...of)
  • moguće uključiti dodatne parametre, kao index trenutačnog elementa ili niz na koji je metoda primijenjena
  • nije je moguće zaustaviti kao klasične petlje

 

  • [2, 5, 8, 1, 4].some(x => x > 10);
  • ECMA2015 standard 
  • vraća true ako barem jedan element zadovoljava uvjet
  • moguće uključiti dodatne parametre kao indeks trenutačnog elementa ili niz na koji je metoda primijenjena

 

  • [20, 50, 80, 11, 41].some(x => x > 10);
  • ECMA2015 standard 
  • vraća true ako svi elementi zadovoljavaju uvjet
  • moguće uključiti dodatne parametre kao indeks trenutačnog elementa ili niz na koji je metoda primijenjena

 

  • var test = niz.map(i => {
        return `${i}aaa`;
    });
  • ECMA2015 standard
  • stvara novi niz koji sadrži rezultate funkcije primijenjene na svaki element niza
  • ne mijenja originalni niz

 

  • var test = niz.filter(i => {
      return i[0] === "š";
    });
  • ECMA2015 standard
  • stvara novi niz koji sadrži elemente koji zadovoljavaju uvjet
  • ne mijenja originalni niz

 

  • [2, 5, 8, 1, 4].reduce((a, b) => {
        return a + b;
    });
  • ECMA2015 standard
  • smanjuje niz na jednu vrijednost
  • pogodan za matematičke operacije
  • ne mijenja originalni niz

 

  • var test = par => {
        return [ "jabuka", "marelica" ].includes(niz);
    }

     niz.find(test);

  • ECMA2015 standard
  • vraća vrijednost prvog elementa niza koji zadovoljava uvjet, u suprotnom vraća undefined
  • ne mijenja originalni niz

 

  • var test = par => {
        return [ "jabuka", "marelica" ].includes(niz);
    }

     niz.findIndex(test);

  • ECMA2015 standard
  • vraća indeks prvog elementa niza koji zadovoljava uvjet, u suprotnom vraća -1
  • ne mijenja originalni niz.

 

Ako projekt koristi vanjske biblioteke:

 

  • jQuery:
    • $.each(niz, function(key, value) {

                console.log(value);

          });

  • Underscore:
    • _.each(niz, function(value, key, niz) {

                console.log(value);

          });

  • Lodash:
    • _.forEach(niz, function(value, key) {

                   console.log(value);

          });

 

Upotreba vanjskih biblioteka dodatno pojednostavnjuje korištenje petlji. Osim dodatne jednostavnosti, vanjske biblioteke imaju i ugrađene dodatne provjere koje provjeravaju ispravnost objekta te o tome sukladno obavještavaju. Ako projekt ne sadrži vanjske biblioteke, za potrebe kretanja kroz objekt ih nije potrebno dodavati, jer obični Vanilla JS uvijek ima bolje performanse od bilo koje apstrakcije koda.