Array.prototype.reduceRight în JavaScript

Tablouri (array) ES5 (toate browserele moderne)

Ca reduce, dar parcurge tabloul de la ultimul element spre primul.

Sintaxă
tablou.reduceRight((acumulator, element) => valoareNoua, valoareInitiala)

Ce face Array.prototype.reduceRight

reduceRight combină elementele tabloului într-o singură valoare, exact ca reduce, dar începe din dreapta. Pentru adunare sau înmulțire rezultatul este același; contează când ordinea operațiilor schimbă rezultatul.

Fără valoare inițială, ultimul element devine acumulatorul de pornire. Pe un tablou gol fără valoare inițială aruncă TypeError.

Parametri

Parametru Descriere
functie Primește (acumulator, element, indice, tablou) și returnează noul acumulator.
valoareInitiala Opțional. Valoarea de pornire a acumulatorului.

Ce returnează

Valoarea finală a acumulatorului.

Exemple

Exemplul 1: Ordinea contează

const litere = ["a", "b", "c"];

console.log(litere.reduce((acc, l) => acc + l));
console.log(litere.reduceRight((acc, l) => acc + l));

Rezultat

abc
cba

Exemplul 2: Compunerea funcțiilor

const compune = (...functii) => (x) => functii.reduceRight((acc, f) => f(acc), x);

const pret = compune((x) => x.toFixed(2) + " lei", (x) => x * 1.21, (x) => x - 10);
console.log(pret(110));

Rezultat

121.00 lei

Greșeli frecvente

  • Apelezi reduceRight pe un tablou care poate fi gol, fără valoare inițială, și primești TypeError: Reduce of empty array with no initial value.

Comenzi înrudite

  • reduce: Combină toate elementele unui tablou într-o singură valoare: o sumă, un obiect, un text.
  • Array.prototype.reverse: Inversează ordinea elementelor din tablou, modificând chiar tabloul.
  • map: Creează un tablou nou, transformând fiecare element cu o funcție.