Las matrices de JavaScript : La comprensión de la función de reducir

Sintaxis

arr.reduce(callbackFunction, [initialValue])

Lo que sí reduce hacer?

Reducir es una función que los bucles a través de una matriz.

Las operaciones pueden ser realizadas en la matriz a través de una función de devolución de llamada.

Al final de las operaciones de la matriz, reducir devuelve un solo valor

Reducir puede ser utilizado, por ejemplo, a un total de un carrito de la compra

Ejemplo

  dejar que arr = [1,2,3,4,5];
  arr.reduce( (acumulador, valor actual, currentIndex, formación) => { 
      //algunas operaciones;
      devolver algo;
  });

 

La función de devolución

La función de devolución de llamada se invoca para cada elemento de la matriz, pasando 4 argumentos que se pasan en por la función de reducir.

Estas 4 argumentos se pueden utilizar en nuestra función de devolución de llamada.

Toma cuatro argumentos

  1. acumulador – El primer elemento de la matriz en el primer bucle o valor inicial si se suministra. A continuación, el valor devuelto del bucle anterior.
  2. valor actual – El elemento actual en la matriz. Comienza desde el segundo elemento de la matriz es decir,. arr[1], cuando no se pasa el argumento de valor inicial. Si el argumento de valor inicial se pasa el valor vigente en ese momento se inicia desde la primera elemento de la matriz arr[0].
  3. currentIndex – El índice del elemento actual.
  4. formación – Toda la matriz.

Ejemplo de Trabajo

dejar que arr = [1,2,3,4,5];

arr.reduce(
  (acumulador, valor actual, currentIndex, formación) => {
    console.log(`acumulador (El 1 de bucle, acumulador es arr[0], entonces es el valor devuelto del bucle anterior): ${acumulador}`);
    console.log(`CurrentValue (Bucles través de la matriz, a partir de arr[1]): ${valor actual}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(array `: ${formación}`);
    console.log('---');
    acumulador de retorno + valor actual;
  }
);

Salida

acumulador (El 1 de bucle, acumulador es arr[0], entonces es el valor devuelto del bucle anterior): 1
valor actual (Bucles través de la matriz, a partir de arr[1]): 2
currentIndex: 1
formación: 1,2,3,4,5
---
acumulador (El 1 de bucle, acumulador es arr[0], entonces es el valor devuelto del bucle anterior): 3
valor actual (Bucles través de la matriz, a partir de arr[1]): 3
currentIndex: 2
formación: 1,2,3,4,5
---
acumulador (El 1 de bucle, acumulador es arr[0], entonces es el valor devuelto del bucle anterior): 6
valor actual (Bucles través de la matriz, a partir de arr[1]): 4
currentIndex: 3
formación: 1,2,3,4,5
---
acumulador (El 1 de bucle, acumulador es arr[0], entonces es el valor devuelto del bucle anterior): 10
valor actual (Bucles través de la matriz, a partir de arr[1]): 5
currentIndex: 4
formación: 1,2,3,4,5
---

 

Proporcionar el valor inicial

Especificación del segundo parámetro (valor inicial) en la función de reducir causará initialValue que se pasa como argumento acumulador en el primer bucle.

Tenga en cuenta que el valor actual en el 1er bucle de ahora se inicia en el primer elemento de la matriz

Ejemplo de Trabajo

  dejar que arr = [1,2,3,4,5];

  arr.reduce(
  (acumulador, valor actual, currentIndex, formación) => {
    console.log(`acumulador ( En el primero de bucle, este es el valor inicial, a continuación, el valor devuelto del bucle anterior): ${acumulador}`);
    console.log(`CurrentValue (Bucles través de la matriz, a partir de arr[0]): ${valor actual}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(array `: ${formación}`);
    console.log('---');
    acumulador de retorno + valor actual;
  }, 0
);

Salida

acumulador ( En el primero de bucle, este es el valor inicial, a continuación, el valor devuelto del bucle anterior): 0
valor actual (Bucles través de la matriz, a partir de arr[0]): 1
currentIndex: 0
formación: 1,2,3,4,5
---
acumulador ( En el primero de bucle, este es el valor inicial, a continuación, el valor devuelto del bucle anterior): 1
valor actual (Bucles través de la matriz, a partir de arr[0]): 2
currentIndex: 1
formación: 1,2,3,4,5
---
acumulador ( En el primero de bucle, este es el valor inicial, a continuación, el valor devuelto del bucle anterior): 3
valor actual (Bucles través de la matriz, a partir de arr[0]): 3
currentIndex: 2
formación: 1,2,3,4,5
---
acumulador ( En el primero de bucle, este es el valor inicial, a continuación, el valor devuelto del bucle anterior): 6
valor actual (Bucles través de la matriz, a partir de arr[0]): 4
currentIndex: 3
formación: 1,2,3,4,5
---
acumulador ( En el primero de bucle, este es el valor inicial, a continuación, el valor devuelto del bucle anterior): 10
valor actual (Bucles través de la matriz, a partir de arr[0]): 5
currentIndex: 4
formación: 1,2,3,4,5
---