Saltar al contenido principal
eLearner.app
Módulo 6 · Lección 2 de 422/32 en el curso~12 min
Lecciones del módulo (2/4)

reduce

reduce es el más potente de los métodos funcionales en los arrays: recorre la colección manteniendo un acumulador que se actualiza a cada paso. Cuando termina el recorrido, devuelve el acumulador.

Firma

JS
arr.reduce((acc, elem) => nuovoAcc, valoreIniziale);
  • acc parte de valoreIniziale.
  • Para cada elemento se calcula un nuevo acc.
  • El resultado final es el último acc.

Ejemplos básicos: suma y producto

JS
const numeri = [3, 1, 4, 1, 5];

const somma = numeri.reduce((a, n) => a + n, 0);
// 14

const prodotto = numeri.reduce((a, n) => a * n, 1);
// 60

Sin valor inicial, reduce empieza desde el primer elemento (riesgoso en arrays potencialmente vacíos → error). Pasa siempre un valor inicial cuando puedas.

Construir un objeto: conteo

JS
const parole = ['mela', 'pera', 'mela', 'kiwi', 'mela'];

const conteggio = parole.reduce((acc, p) => {
  acc[p] = (acc[p] ?? 0) + 1;
  return acc;
}, {});
// { mela: 3, pera: 1, kiwi: 1 }

Encontrar máximo / mínimo

JS
const nums = [3, 7, 1, 9, 4];

const max = nums.reduce((a, n) => (n > a ? n : a), -Infinity);
// 9

(En la práctica para max/min es preferible Math.max(...nums); este es un ejemplo didáctico.)

Pruébalo tú

Ejercicio#js.m6.l2.e1
Intentos: 0Cargando...

Define `total(items)`: recibe un array de objetos { price, quantity } y devuelve la suma total (suma de price*quantity). Usa reduce.

Cargando editor...
Mostrar pista

reduce((a, it) => a + it.price * it.quantity, 0)

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#js.m6.l2.e2
Intentos: 0Cargando...

Define `count(words)`: dado un array di stringhe, devuelve un objeto que asocia cada string con su número de ocurrencias. Usa reduce con un objeto como acumulador.

Cargando editor...
Mostrar pista

acc[p] = (acc[p] ?? 0) + 1; return acc;

Solución disponible después de 3 intentos