A reduce metódus

A reduce metódus egy tömböt egyetlen értékké redukál („összecsuk”). Például ezen metódus segítségével könnyen megtalálható a tömb elemeinek összege (vagyis a tömb egyetlen értékké, az elemek összegévé redukálódik).

A reduce metódus első paramétereként kap egy függvényt, amely sorban végrehajtódik a tömb minden elemén, az elsőtől kezdve. Ehhez a függvényhez 4 paramétert lehet átadni. Ha ezek a paraméterek léteznek (nem kötelezőek), akkor az elsőbe automatikusan a köztes eredmény kerül, a másodikba a tömb eleme, a harmadikba - a tömb beli sorszáma (index), a negyedikbe pedig maga a tömb.

A köztes eredmény egy olyan változó, amelyben felhalmozódik az az érték, amit a reduce metódus ad vissza, amikor végigiterált a tömb összes elemén. Például ebbe sorban felhalmozható a tömb elemeinek összege: először betesszük az első elemet, a ciklus következő futásakor már az első és a második elem összegét, a következő futáskor - az első, második és harmadik elemét. És így tovább, amíg a tömb el nem fogy. A reduce által fogadott függvénynek az új köztes eredmény értékét kell visszaadnia.

A reduce metódus második paramétere a köztes eredmény kezdeti értéke. Ha nincs megadva, akkor az első tömb elemével egyenlő, az elemek feldolgozása pedig a második elemtől kezdődik.

Szintaxis

javascripttömb.reduce(function(köztes eredmény, elem, index, tömb) {
  return új köztes eredmény;
}, kezdeti érték);

Példa

Határozzuk meg a tömb elemeinek összegét:

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

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

console.log(res);

A kód végrehajtásának eredménye:

javascript21

Példa

Keressük meg az összes pozitív szám összegét a tömbben:

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

A kód végrehajtásának eredménye:

javascript10

Lásd még

  • a reduceRight metódus,
    amely hasonló műveletet hajt végre
  • a filter metódus,
    amely lehetővé teszi a tömb elemeinek szűrését
  • a map és forEach metódusok,
    amelyek lehetővé teszik egy függvény alkalmazását a tömb minden elemére
  • a some és every metódusok,
    amelyek ellenőrzést végeznek a tömbön