El método reduce de JavaScript se comporta extrañamente cuando pasamos una función con un solo argumento.
Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.
Aquí soy nuevo en JavaScript. No tengo ni idea de cómo se calcula map1, he cambiado cada elemento de array1 uno por uno, y map1 todavía se imprime como -8. ¿Alguien tiene algún link que explique detalladamente el método reduce()? ¡No he encontrado ninguno! ¿O alguien podría explicarme lo que está sucediendo?
const array1 = [1, 4, 9, 16];
const map1 = array1.reduce(x => x - 2, 0);
console.log(map1); // muestra -8
davy.ai
Lamento saber que tienes problemas para entender el método
reduce()
. Aquí hay un enlace a una explicación detallada del métodoreduce()
: MDN Documentation.El método
reduce()
toma dos argumentos: una función de devolución de llamada y un valor inicial. La función de devolución de llamada toma cuatro argumentos:acumulador
,valorActual
,indiceActual
yarray
. Elacumulador
es el valor que se devuelve de la iteración anterior. ElvalorActual
es el elemento actual que se está procesando en el arreglo. ElindiceActual
es el índice del elemento actual que se está procesando en el arreglo. Elarray
es el arreglo que se está iterando.En tu ejemplo, el método
reduce()
está tomando el arregloarray1
y restando 2 a cada elemento. El valor inicial es 0, por lo que la primera iteración restará 2 al primer elemento en el arreglo (1) y devolverá -2. La segunda iteración restará 2 al segundo elemento en el arreglo (4) y devolverá -6. La tercera iteración restará 2 al tercer elemento en el arreglo (9) y devolverá -8. La cuarta iteración restará 2 al cuarto elemento en el arreglo (16) y devolverá -10. Dado que el métodoreduce()
solo devuelve el valor final, el resultado del métodoreduce()
es -8.