Metoda reduce
Metoda reduce e shemb një varg në
një vlerë të vetme (redukton). Për shembull,
me ndihmën e kësaj metode mund të gjendet lehtësisht shuma
e elementeve të vargut (d.m.th., vargu do të reduktohet
në një vlerë të vetme - shumën e elementeve).
Si parametër të parë, metoda reduce merr
në funksion, i cili do të ekzekutohet në mënyrë sekuenciale
për çdo element të vargut, duke filluar nga i pari.
Në këtë funksion mund të kalohen 4 parametra.
Nëse këta parametra ekzistojnë (ata nuk janë të detyrueshëm),
atëherë në të parën automatikisht do të vendoset rezultati
i ndërmjetëm, në të dytin do të vendoset elementi
i vargut, në të tretën - numri i tij në varg (indeksi),
dhe në të katërtin - vetë vargu.
Rezultati i ndërmjetëm - është një ndryshore,
në të cilën do të akumulohet vlera
që kthen metoda reduce, kur
ka përshkuar të gjithë elementët e vargut. Për shembull,
atje mund të akumulohet në mënyrë sekuenciale shuma
e elementeve të vargut: së pari vendoset elementi i parë,
në kalimin tjetër të ciklit tashmë
shuma e elementit të parë dhe të dytë, në kalimin pasardhës
- shuma e të parit, të dytit dhe të tretit.
Dhe kështu me radhë, derisa vargu të mbarojë.
Funksioni, të cilin e pranon reduce,
duhet të kthejë vlerën e re të rezultatit të ndërmjetëm.
Si parametër i dytë i metodës reduce specifikohet
vlera fillestare e rezultatit të ndërmjetëm.
Nëse nuk specifikohet, ajo do të jetë e barabartë me elementin e parë
të vargut, dhe përpunimi i elementëve do të fillojë
nga elementi i dytë.
Sintaksa
varg.reduce(function(rezultatNdermjetem, element, indeks, varg) {
return rezultatNdermjetem i ri;
}, vleraFillestare);
Shembull
Le të gjejmë shumën e elementeve të vargut:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(res);
Rezultati i ekzekutimit të kodit:
21
Shembull
Le të gjejmë shumën e të gjithë numrave pozitivë të vargut:
let 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);
Rezultati i ekzekutimit të kodit:
10