Ce face reduce
reduce parcurge tabloul și păstrează un acumulator. La fiecare element, funcția primește acumulatorul și elementul curent și returnează noua valoare a acumulatorului. La final primești ultima valoare.
Al doilea parametru, valoarea inițială, este pus în acumulator la început. Dă-l mereu: fără el, un tablou gol produce eroare.
Parametri
| Parametru | Descriere |
|---|---|
acumulator |
Rezultatul adunat până acum. |
element |
Elementul curent. |
valoareInitiala |
Valoarea de pornire a acumulatorului, de exemplu 0 pentru o sumă sau {} pentru un obiect. |
Ce returnează
Valoarea finală a acumulatorului.
Exemple
Exemplul 1: Suma elementelor
const vanzari = [120, 80, 300, 50];
const total = vanzari.reduce((suma, v) => suma + v, 0);
console.log(total);
Rezultat
550
Exemplul 2: Totalul unui coș de cumpărături
const cos = [
{ produs: "Carte", pret: 45, bucati: 2 },
{ produs: "Pix", pret: 5, bucati: 10 },
];
const total = cos.reduce((suma, linie) => suma + linie.pret * linie.bucati, 0);
console.log(`${total} lei`);
Rezultat
140 lei
Exemplul 3: Numărarea aparițiilor
const voturi = ["da", "nu", "da", "da", "abținere"];
const rezultat = voturi.reduce((numaratoare, vot) => {
numaratoare[vot] = (numaratoare[vot] || 0) + 1;
return numaratoare;
}, {});
console.log(rezultat);
Rezultat
{ da: 3, nu: 1, 'abținere': 1 }
Greșeli frecvente
- Uiți valoarea inițială pe un tablou gol:
[].reduce((a, b) => a + b)dăTypeError: Reduce of empty array with no initial value. - Uiți
returnîn funcția cu acolade și acumulatorul devineundefineddupă primul pas.