Metoda reduce

Metoda reduce zloži polje v eno vrednost (reducira). Na primer, s to metodo lahko zlahka najdemo vsoto elementov polja (to pomeni, da bo polje zmanjšano na eno samo vrednost - na vsoto elementov).

Kot prvi parameter metoda reduce prejme funkcijo, ki se bo zaporedno izvajala za vsak element polja, začenši s prvim. V to funkcijo lahko podamo 4 parametre. Če ti parametri obstajajo (niso obvezni), potem bo prvi samodejno prejel vmesni rezultat, drugi bo prejel element polja, tretji - njegovo številko v polju (indeks), četrti pa - samo polje.

Vmesni rezultat je spremenljivka, v kateri se bo kopičila vrednost, ki jo bo vrnila metoda reduce, ko bo pregledala vse elemente polja. Na primer, tja lahko zaporedno kopičimo vsoto elementov polja: najprej damo prvi element, ob naslednjem prehodu zanke že vsoto prvega elementa in drugega, ob naslednjem prehodu - vsoto prvega, drugega in tretjega. In tako naprej, dokler se polje ne konča. Funkcija, ki jo sprejme reduce, mora vrniti novo vrednost vmesnega rezultata.

Kot drugi parameter metode reduce se navede začetna vrednost vmesnega rezultata. Če je ne navedemo, bo enaka prvemu elementu polja, obdelava elementov pa se bo začela z drugim elementom.

Sintaksa

javascriptpolje.reduce(function(vmesniRezultat, element, indeks, polje) {
  return novVmesniRezultat;
}, zacetnaVrednost);

Primer

Poiščimo vsoto elementov polja:

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

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

console.log(res);

Rezultat izvajanja kode:

javascript21

Primer

Poiščimo vsoto vseh pozitivnih števil v polju:

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

Rezultat izvajanja kode:

javascript10

Glejte tudi

  • metoda reduceRight,
    ki izvaja podobno operacijo
  • metoda filter,
    ki omogoča filtriranje elementov polja
  • metodi map in forEach,
    ki omogočata apliciranje funkcije na vsak element polja
  • metodi some in every,
    ki izvajata preverjanje polja