Metoda filter

Metoda filter umožňuje filtrovat prvky pole a ponechat pouze ty, které vyhovují určité podmínce. Metoda obdrží v parametru funkci, která se provede pro každý prvek pole. Výsledkem metody je nové pole, do kterého vstoupí pouze ty prvky, pro které předaná funkce vrátí true.

Do funkce lze předat tři parametry. Pokud tyto parametry existují (nejsou povinné), tak do prvního bude automaticky dosazen prvek pole, do druhého bude dosazeno jeho číslo v poli (index) a do třetího - samotné pole.

Syntaxe

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

Příklad

Pojďme filtrovat pole a ponechat v něm pouze 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ýsledek provedení kódu:

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

Příklad

Zkrátíme kód pomocí šipkové funkce:

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ýsledek provedení kódu:

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

Příklad

Zkrátíme kód pomocí zkráceného vyhodnocování logických operací:

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

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

console.log(res);

Výsledek provedení kódu:

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

Příklad

Zkrátíme kód využitím vlastností šipkových funkcí:

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

console.log(res);

Výsledek provedení kódu:

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

Příklad

V případě potřeby lze do třetího parametru předat samotné pole:

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

Viz také

  • metody map a forEach,
    které umožňují aplikovat funkci na každý prvek pole
  • metody some a every,
    provádějící kontrolu pole
  • metody reduce a reduceRight,
    redukující pole na jednu hodnotu