Método reduce
El método reduce reduce un array a
un solo valor (reduce). Por ejemplo,
con este método se puede encontrar fácilmente la suma
de los elementos del array (es decir, el array se reduce
a un solo valor: la suma de los elementos).
El primer parámetro del método reduce recibe
una función, que se ejecutará secuencialmente
para cada elemento del array, comenzando por el primero.
Se pueden pasar 4 parámetros a esta función.
Si estos parámetros están presentes (no son obligatorios),
entonces en el primero entrará automáticamente el resultado
intermedio, en el segundo entrará el elemento
del array, en el tercero - su número en el array (índice),
y en el cuarto - el array mismo.
El resultado intermedio es una variable
en la que se acumulará el valor
que devolverá el método reduce cuando
haya recorrido todos los elementos del array. Por ejemplo,
ahí se puede acumular secuencialmente la suma
de los elementos del array: primero poner el primer
elemento, en la siguiente iteración del ciclo
la suma del primer elemento y del segundo,
en la siguiente - la suma del primero, segundo y tercero.
Y así, hasta que el array termine.
La función que acepta reduce
debe devolver el nuevo valor del resultado intermedio.
El segundo parámetro del método reduce especifica
el valor inicial del resultado intermedio.
Si no se especifica, será igual al primer
elemento del array, y el procesamiento de elementos comenzará
desde el segundo elemento.
Sintaxis
array.reduce(function(resultadoIntermedio, elemento, indice, array) {
return nuevoResultadoIntermedio;
}, valorInicial);
Ejemplo
Encontremos la suma de los elementos del array:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(res);
Resultado de la ejecución del código:
21
Ejemplo
Encontremos la suma de todos los números positivos del array:
let arr = [1, -2, -3, 4, 5, -6];
let res = arr.reduce(function(sum, elem) {
if (elem >= 0) {
return sum + elem;
} else {
return sum;
}
}, 0);
console.log(res);
Resultado de la ejecución del código:
10