reduce() es uno de los métodos más poderosos en JavaScript para trabajar con arrays. Se usa para reducir un array a un solo valor, acumulando cada elemento con una función.
array.reduce((acumulador, elementoActual, índice, arrayOriginal) => {
// Lógica de acumulación
}, valorInicial);
Parámetros:
const numeros = [1, 2, 3, 4, 5];
const suma = numeros.reduce((acumulador, numero) => {
return acumulador + numero;
}, 0);
console.log(suma); // 15
const numeros = [10, 25, 8, 99, 32];
const maximo = numeros.reduce((acumulador, numero) => {
return numero > acumulador ? numero : acumulador;
}, numeros[0]);
console.log(maximo); // 99
const frutas = ["manzana", "banana", "naranja", "manzana", "banana", "manzana"];
const conteo = frutas.reduce((acumulador, fruta) => {
acumulador[fruta] = (acumulador[fruta] || 0) + 1;
return acumulador;
}, {});
console.log(conteo);
/* Salida:
{
manzana: 3,
banana: 2,
naranja: 1
}
*/
const palabras = ["Hola", "mundo", "desde", "JavaScript"];
const frase = palabras.reduce((acumulador, palabra) => {
return acumulador + " " + palabra;
});
console.log(frase); // "Hola mundo desde JavaScript"
const personas = [
{ nombre: "Pedro", edad: 30 },
{ nombre: "Ana", edad: 25 },
{ nombre: "Luis", edad: 30 },
{ nombre: "Sofía", edad: 25 }
];
const agrupado = personas.reduce((acumulador, persona) => {
if (!acumulador[persona.edad]) {
acumulador[persona.edad] = [];
}
acumulador[persona.edad].push(persona);
return acumulador;
}, {});
console.log(agrupado);
/*
Salida:
{
30: [{ nombre: "Pedro", edad: 30 }, { nombre: "Luis", edad: 30 }],
25: [{ nombre: "Ana", edad: 25 }, { nombre: "Sofía", edad: 25 }]
}
*/
Para sumar, contar, agrupar, transformar o reducir un array a un solo valor.
Evitarlo si hay formas más simples (map(), filter(), find(), etc.).