const array = [7, 2, 4, 1, 10, 6, 5, 11] const max = array.reduce((acc, val) => { console.log(val, acc) return val > acc ? val : acc }, 0) console.log(max)Estaba mirando este código del método de matriz de reducción, una cosa que no pude entender en absoluto es: ¿Cómo va la función de reducción a la siguiente iteración? No hay ninguna condición que obligue a la función reductora a ir al siguiente elemento de la matriz. En la primera iteración, val es 7, el primer elemento de la matriz, y acc es 0, la función reductora devuelve 7 según la condición escrita. Mi pregunta es cómo se llamará al número 7 como el nuevo acumulador en la función reductora. Pensé que el procedimiento normal es que tienes que cumplir con algún tipo de condición para iterar una y otra vez. ¿Hay algo escrito en el método de reducción en sí? ¿Puedes explicarme por favor?
Según los documentos aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
El método reduce () ejecuta una función de devolución de llamada "reductor" proporcionada por el usuario en cada elemento de la matriz,
Tenga en cuenta que array.reduce :
reduce llama a la devolución de llamada, como una función, una vez para cada elemento después del primer elemento presente en la matriz, en orden ascendente.
Podría entender la reduce como una array.map pero el objetivo es cambiar la matriz a una salida única.
Recorrerá toda la array de la misma manera que forEach / map /...
Verifique el siguiente ejemplo, aunque no haga nada, como return o cualquier otra cosa a array.reduce , seguirá funcionando e iterando la array
Puedes consultar aquí para obtener más
Pero, por supuesto, si no usa return para array.reduce , no obtendrá ningún beneficio si usa array.reduce
const array = [7, 2, 4, 1, 10, 6, 5, 11] const max = array.reduce((acc, val) => { console.log(val) }, 0) console.log(max)La implementación del método reduce se parece a algo como esto:
Array.prototype.reduce = function(callback, initialValue) { var acc = initialValue; for(var i = 0; i < this.length; i++) { acc = callback(acc, this[i], i); } return acc; } La condición de iteración de métodos de reduce es la longitud de la matriz. Lo mismo ocurre con el map .