Metoda filter

Metoda filter omogoča filtriranje elementov polja, tako da ohranimo le tiste elemente, ki ustrezajo določenemu pogoju. Metoda kot parameter prejme funkcijo, ki se izvede za vsak element polja. Kot rezultat metoda vrne novo polje, ki bo vključevalo le tiste elemente, za katere podana funkcija vrne true.

Funkciji lahko podamo tri parametre. Če ti parametri obstajajo (niso obvezni), potem bo prvi samodejno prejel element polja, drugi bo prejel njegovo številko v polju (indeks), tretji pa bo prejel samo polje.

Sintaksa

javascriptlet novoPolje = polje.filter(function(element, indeks, polje) {
  koda
  return true ali false
});

Primer

Filtrirajmo polje tako, da v njem ohranimo le pozitivna števila:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(function(elem) {
  if (elem >= 0) {
    return true;
  } else {
    return false;
  }
});

console.log(res);

Rezultat izvajanja kode:

javascript[5, 1, 1, 3, 4]

Primer

Skrajšajmo kodo z uporabo funkcije s puščico:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(elem => {
  if (elem >= 0) {
    return true;
  } else {
    return false;
  }
});

console.log(res);

Rezultat izvajanja kode:

javascript[5, 1, 1, 3, 4]

Primer

Skrajšajmo kodo z uporabo skrajšanja logičnih operacij:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(elem => {
  return elem >= 0;
});

console.log(res);

Rezultat izvajanja kode:

javascript[5, 1, 1, 3, 4]

Primer

Skrajšajmo kodo z uporabo značilnosti funkcij s puščico:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];
let res = arr.filter(elem => elem > 0);

console.log(res);

Rezultat izvajanja kode:

javascript[5, 1, 1, 3, 4]

Primer

Po potrebi lahko v tretji parameter podamo polje samo:

javascriptlet res = arr.filter(function(elem, index, arr) {
  tukaj bo polje arr dostopno
});

Glejte tudi

  • metodi map in forEach,
    ki omogočata uporabo funkcije za vsak element polja
  • metodi some in every,
    ki izvajata preverjanje polja
  • metodi reduce in reduceRight,
    ki zložita polje v eno vrednost