reduce
El método reduce() devuelve un valor de salida único a través de una función reductora (callback) que se ejecuta por cada elemento en un array.
const food = [
"🥣 Cereal",
"🍕 Pizza",
"🌮 Taco",
"🍎 Apple",
"🥧 Pie",
"🥛 Milk",
];
const poop = food.reduce(eat);
console.log(poop); // 💩
Sintaxis
const value = array.reduce(callback(accumulator, currentValue, currentIndex, innerArray) {
// ...
}, initialValue);
callback
Función a ejecutar por cada elemento en el array. Si no hay un elemento inicial (initialValue) no se va a ejecutar para el primer elemento del array.
accumulator
El primer argumento que recibe el callback. Acumular el último valor devuelto por el callback, o en su defecto también representa el initialValue si este fue proporcionado.
currentValue
Es el segundo argumento que recibe el callback y representa el elemento actual que la función (callback) está procesando. Este argumento es clave para manipular los datos que está manejando reduce.
currentIndex
Es el tercer argumento que recibe el callback y representa el índice del elemento actual dentro del array. Si se proporciona el initialValue comienza desde el 0, de lo contrario comienza desde el 1.
innerArray
El cuarto y último argumento que recibe el callback y representa el array sobre el que se llama reduce. Es decir, el array de origen
initialValue
El initialValue es un valor opcional que se le puede pasar a reduce. Si este no es proporcionado, el primer elemento del array será utilizado en su lugar, saltando al currentValue.
Lo sé esta parte es un poco compleja, es por ello que decidí hacer dos ejemplos visuales que te ayuden a entender mejor el initialValue y reduce en general.
Pon mucha atención en la tabla derecha y como van cambiando los valores conforme a las iteraciones.
Sin initialValue
El siguiente ejemplo muestra el uso de reduce, sin un valor inicial.
const array = [2, 6, 9];
const result = array.reduce(function (accumulator, currentValue) {
return accumulator + currentValue;
});
console.log(result);
Con base en el código anterior, los valores se interpretan de la siguiente forma en su primera ejecución:

En la segunda ejecución los valores cambian:

El resultado es la suma final de 8 + 9, que da como resultado 17.
Con initialValue
Con un valor inicial, el código se ejecuta de manera distinta. En este ejemplo, el código usa un valor inicial de 5.
const array = [2, 6, 9];
const result = array.reduce(function (accumulator, currentValue) {
return accumulator + currentValue;
}, 5);
console.log(result);
Primera ejecución:

Segunda ejecución:

Tercera ejecución:

El resultado es la suma final de 13 + 9, que da como resultado 22.
Cuando hay un valor inicial (InitialValue) el acumulador (accumulator) pasa a ser ese valor, pero si no hay un valor inicial, pasa a ser el primer elemento del array.
Si aún te es difícil entender reduce, recuerda que puedes dejarme un comentario para así aclarar tus dudas.
Otros métodos:


