Uso del método reduce en JavaScript para sumar elementos de un array
Clase 10 de 28 • Curso de Manipulación de Arrays en JavaScript
Contenido del curso
Fundamentos del manejo de arrays
- 2

Recorrido de Arrays con Foreach en JavaScript
09:35 min - 3

Mutabilidad vs Inmutabilidad en Programación JavaScript
04:17 min - 4

Uso de Map para Transformaciones en JavaScript y Renderizado HTML
07:28 min - 5
Playground: multiplica todos los elementos por dos
- 6

Transformaciones avanzadas con map en JavaScript
09:59 min - 7
Playground: calcula y agrega nuevas propiedades a un array
- 8

Filtrado de Arrays en JavaScript con el Método Filter
12:41 min - 9
Playground: retorna solo palabras de 4 letras o más
- 10

Uso del método reduce en JavaScript para sumar elementos de un array
Viendo ahora - 11

Contar elementos en un array con reduce y agrupar por rango
10:29 min - 12
Playground: calcula la suma total de elementos en un array
Métodos en JavaScript
- 13

Uso de la función "sum" en JavaScript para evaluar condiciones
11:45 min - 14
Playground: ¿al menos 1 de los números es par?
- 15

Uso del método `every` en JavaScript para validaciones de arrays
04:13 min - 16
Playground: retorna un booleano si todos los elementos son pares
- 17

Uso de los métodos find y findIndex en JavaScript
06:20 min - 18

Uso del método includes en JavaScript para arrays y strings
04:59 min - 19
Playground: buscador de palabras con parámetros de búsqueda
- 20

Unificación y separación de arrays con join y split en JavaScript
07:02 min - 21
Playground: construye URLs a partir de strings
- 22

Fusión de Arrays con Concat y Operador Spread en JavaScript
09:35 min - 23

Aplanar Arrays en JavaScript con Flat y FlatMap
06:45 min - 24

Uso de FlatMap para Extraer Fechas de Calendarios en JavaScript
09:22 min - 25
Playground: calcula el total de palabras en un texto
- 26

Métodos Mutables e Inmutables en Arrays: Manipulación y Búsqueda
10:27 min - 27

Ordenamiento de Arrays con el Método Sort en JavaScript
07:13 min
Despedida
El método reduce es inmutable y consiste retornar un solo valor del array iterado a partir de una función (callback) que indica de qué manera se itera cada elemento para reducirlo.
Este método recibe dos argumentos:
- La función que itera y reduce cada elemento del array. (obligatorio)
- El valor inicial que utilizará como argumento la función. Si no se especifica, en la primera iteración el valor inicial será el primer elemento del array y no ejecuta la función.
let reducedValue = array.reduce(function(), initialValue)
La función, que recibe como argumento el método map, utiliza cuatro parámetros:
- El valor acumulado por la función (callback). En la primera iteración será igual al valor inicial del argumento del método. (obligatorio)
- El valor actual del elemento iterado. Es decir, si es la primera iteración, será el primer elemento, y así sucesivamente. (obligatorio)
- El índice del elemento iterado. Es decir, si es la primera iteración, será el índice
0, y así sucesivamente. - El array que está iterando.
let reducedValue = array.reduce(
function(acumulator,element, index, array),
valorInicial
)
Diferencia entre la estructura for y el método reduce
Los métodos de arrays nos permiten realizar algoritmos con una menor cantidad de líneas que una estructura for, con un resultado igual o parecido.
Por ejemplo, hagamos un algoritmo que calcule la suma de los cuadrados de los elementos de un array.
Uso de la estructura for para una reducción
Si utilizamos la estructura for, necesitaremos una variable acumuladora para sumar los elementos en cada iteración.
const numbers = [5,4,8,6,2]
let suma = 0
for(let i = 0; i<numbers.length; i++){
const number = numbers[i]
suma = suma + number**2
}
console.log(suma) // 145
Uso del método reduce para una reducción
Con el método reduce, solo debemos establecer la función que indique la reducción para cada elemento.
const numbers = [5,4,8,6,2]
const reducedValue = numbers.reduce((suma, number) => suma + number**2)
console.log(reducedValue) // 125
Observa que si no especificamos el valor inicial del método, entonces tomará el primer elemento sin ejecutar la función reductora.
| Iteración | Reducción |
|---|---|
| 1 | 5 |
| 2 | 5 + 4**2 = 21 |
| 3 | 21 + 8**2 = 85 |
| 4 | 85 + 6**1 = 121 |
| 5 | 121 + 2**2 = 125 |
Por lo que debes especificar el valor inicial para solucionar este problema.
const numbers = [5,4,8,6,2]
const reducedValue = numbers.reduce((suma, number) => (
suma + number**2
), 0) // <- Valor inicial
console.log(reducedValue) // 145
De esta manera se ejecutará la función reductora adecuadamente.
| Iteración | Reducción |
|---|---|
| 1 | 0 + 5**2 = 25 |
| 2 | 25 + 4**2 = 41 |
| 3 | 21 + 8**2 = 105 |
| 4 | 85 + 6**1 = 141 |
| 5 | 121 + 2**2 = 145 |
Si se ingresa otro valor inicial, por ejemplo 3, entonces cambiaría la primera iteración.
| Iteración | Reducción |
|---|---|
| 1 | 3 + 5**2 = 28 |
| 2 | 28 + 4**2 = 44 |
| … | … |
| 5 | 144 + 2**2 = 148 |
Contribución creada por: Andrés Guano.