Metoda reduce
Metoda reduce reduce un array la
o singură valoare (reducere). De exemplu,
cu ajutorul acestei metode poți găsi cu ușurință suma
elementelor array-ului (adică array-ul va fi redus
la o singură valoare - suma elementelor).
Primul parametru al metodei reduce primește
o funcție, care se va executa secvențial
pentru fiecare element al array-ului, începând cu primul.
În această funcție pot fi transmise 4 parametri.
Dacă acești parametri există (nu sunt obligatorii),
atunci în primul va intra automat rezultatul
intermediar, în al doilea va intra elementul
array-ului, în al treilea - numărul său în array (indexul),
iar în al patrulea - array-ul în sine.
Rezultatul intermediar - este o variabilă,
în care se va acumula valoarea
pe care o va returna metoda reduce, când
va parcurge toate elementele array-ului. De exemplu,
acolo poți acumula secvențial suma
elementelor array-ului: mai întâi pune primul
element, la următoarea iterație a ciclului
deja suma primului element și a celui de-al doilea, la următoarea
iterație - suma primului, celui de-al doilea și a celui de-al treilea.
Și așa mai departe, până când array-ul se termină.
Funcția, pe care o acceptă reduce,
trebuie să returneze noua valoare a rezultatului
intermediar.
Al doilea parametru al metodei reduce specifică
valoarea inițială a rezultatului intermediar.
Dacă nu este specificat, atunci va fi egal cu primul
element al array-ului, iar procesarea elementelor va începe
de la al doilea element.
Sintaxă
array.reduce(function(rezultatIntermediar, element, index, array) {
return noulRezultatIntermediar;
}, valoareInitiala);
Exemplu
Să aflăm suma elementelor array-ului:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(res);
Rezultatul executării codului:
21
Exemplu
Să aflăm suma tuturor numerelor pozitive din array:
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);
Rezultatul executării codului:
10