Metóda filter

Metóda filter umožňuje filtrovať prvky poľa, pričom ponechá len tie, ktoré spĺňajú určitú podmienku. Metóda ako parameter prijíma funkciu, ktorá sa vykoná pre každý prvok poľa. Výsledkom metódy je nové pole, do ktorého vstúpia len tie prvky, pre ktoré zadaná funkcia vráti true.

Do funkcie je možné odovzdať tri parametre. Ak tieto parametre existujú (nie sú povinné), tak do prvého sa automaticky dostane prvok poľa, do druhého sa dostane jeho číslo v poli (index) a do tretieho - samotné pole.

Syntax

javascriptlet nové pole = pole.filter(function(prvok, index, pole) {
  kód
  return true alebo false
});

Príklad

Poďme prefiltrovať pole, ponechajme v ňom len kladné čísla:

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);

Výsledok vykonania kódu:

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

Príklad

Skrátime kód využitím funkcie šíp:

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);

Výsledok vykonania kódu:

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

Príklad

Skrátime kód využitím skrátenia logických operácií:

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

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

console.log(res);

Výsledok vykonania kódu:

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

Príklad

Skrátime kód využitím vlastností funkcií šíp:

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

console.log(res);

Výsledok vykonania kódu:

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

Príklad

V prípade potreby je možné ako tretí parameter odovzdať samotné pole:

javascriptlet res = arr.filter(function(elem, index, arr) {
  tu bude dostupné pole arr
});

Pozri tiež

  • metódy map a forEach,
    ktoré umožňujú aplikovať funkciu na každý prvok poľa
  • metódy some a every,
    vykonávajúce kontrolu poľa
  • metódy reduce a reduceRight,
    redukujúce pole na jednu hodnotu