Aprenda el reduce() y reduceRight() de matrices en un artículo

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

  1. 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.
  2. 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.
  3. ubicación actual. Un número entero que indica la posición del segundo parámetro (la variable actual), cuyo valor predeterminado es 1.
  4. 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á 5una 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.

Supongo que te gusta

Origin blog.csdn.net/weixin_46369590/article/details/129986614
Recomendado
Clasificación