reduce()
Los métodos y reduceRight()
los métodos procesan cada miembro de la matriz a su vez, y eventualmente se acumulan en un solo valor.
Su diferencia es, reduce()是从左到右处理
, reduceRight()则是从右到左
, y los demás son exactamente iguales.
[1, 2, 3, 4, 5].reduce(function (a, b) {
console.log(a, b);
return a + b;
})
// 1 2
// 3 3
// 6 4
// 10 5
//最后结果:15
En el código anterior, el método reduce() se usa para encontrar la suma de todos los miembros de la matriz. reduce() 参数是一个函数
, cada miembro de la matriz ejecutará esta función a su vez. Si la matriz tiene n miembros, esta función paramétrica se ejecutará n - 1 veces.
- Primera ejecución: a es el primer miembro 1 del arreglo, b es el segundo miembro 2 del arreglo.
- La segunda ejecución: a es el valor de retorno 3 de la ronda anterior, y b es el tercer miembro 3.
- La tercera ejecución: a es el valor de retorno 6 de la ronda anterior, y b es el cuarto miembro 4.
- La cuarta ejecución: a es el valor de retorno 10 de la ronda anterior, y b es el quinto miembro 5. En este punto, se completa el recorrido de todos los miembros y el valor de retorno de todo el método es el valor de retorno 15 de la última ronda.
método reduce() y método reduceRight() 第一个参数都是一个函数
. la 接受以下四个参数
función
- variable acumulada. Cuando se ejecuta por primera vez, por defecto es el primer miembro de la matriz; cada ejecución posterior, es el valor de retorno de la ronda anterior.
- variable actual. Cuando se ejecuta por primera vez, por defecto es el segundo miembro de la matriz; en cada ejecución posterior, es el siguiente miembro.
- ubicación actual. Un número entero que indica la posición del segundo parámetro (la variable actual), cuyo valor predeterminado es 1.
- matriz original.
Entre estos cuatro parámetros, solo los dos primeros son obligatorios y los dos últimos son opcionales.
[1, 2, 3, 4, 5].reduce(function (
a, // 累积变量,必须
b, // 当前变量,必须
i, // 当前位置,可选
arr // 原数组,可选
) {
// ... ...
Si desea especificar un valor inicial para la variable acumulativa, puede ponerlo en el método reduce() y en el método reduceRight() 第二个参数
.
[1, 2, 3, 4, 5].reduce(function (a, b) {
return a + b;
}, 10);
// 25
El código anterior especifica que el valor inicial del parámetro a es 10, por lo que la matriz comienza a acumularse desde 10 y el resultado final es 25. 注意
, en este momento b comienza a atravesar desde el primer miembro de la matriz, y la función de parámetro se ejecutará 5
una vez.
Se recomienda agregar siempre el segundo parámetro, que es más intuitivo, y cada miembro de la matriz ejecutará la función de parámetro del método reduce() a su vez.