Metoda reduce

Metoda reduce redukuje pole na jednu hodnotu. Například, pomocí této metody lze snadno najít součet prvků pole (tj. pole se redukuje na jednu hodnotu - na součet prvků).

Prvním parametrem metoda reduce přijímá funkci, která se postupně provede pro každý prvek pole, počínaje prvním. Do této funkce lze předat 4 parametry. Pokud tyto parametry existují (nejsou povinné), tak do prvního bude automaticky dosazen mezivýsledek, do druhého bude dosazen prvek pole, do třetího - jeho číslo v poli (index), a do čtvrtého - samotné pole.

Mezivýsledek - je proměnná, ve které se bude akumulovat hodnota, kterou metoda reduce vrátí, když projde všechny prvky pole. Například, lze do ní postupně ukládat součet prvků pole: nejprve vložit první prvek, při příštím průchodu cyklem již součet prvního prvku a druhého, při dalším průchodu - součet prvního, druhého a třetího. A tak dále, dokud pole neskončí. Funkce, kterou reduce přijímá, by měla vracet novou hodnotu mezivýsledku.

Druhým parametrem metody reduce se určuje počáteční hodnota mezivýsledku. Pokud není uvedena, bude rovna prvnímu prvku pole a zpracování prvků začne od druhého prvku.

Syntaxe

javascriptpole.reduce(function(mezivýsledek, prvek, index, pole) {
  return nový mezivýsledek;
}, počáteční hodnota);

Příklad

Najděme součet prvků pole:

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

let res = arr.reduce(function(sum, elem) {
  return sum + elem;
}, 0);

console.log(res);

Výsledek provedení kódu:

javascript21

Příklad

Najděme součet všech kladných čísel pole:

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

let res = arr.reduce(function(sum, elem) {
  if (elem >= 0) {
    return sum + elem;
  } else {
    return sum;
  }
}, 0);

console.log(res);

Výsledek provedení kódu:

javascript10

Viz také

  • metoda reduceRight,
    provádějící podobnou operaci
  • metoda filter,
    který umožňuje filtrovat prvky pole
  • metody map a forEach,
    které umožňují aplikovat funkci na každý prvek pole
  • metody some a every,
    provádějící kontrolu pole