El método JavaScript Array reduceRight () ejecuta una función reductora en cada elemento de la matriz y la aplica contra un acumulador.
La sintaxis del reduceRight()
método es:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Aquí, arr es una matriz.
Parámetros de reduceRight ()
El reduceRight()
método incluye:
- callback: la función que se ejecutará en cada elemento de la matriz. Toma en:
- acumulador: acumula los valores de retorno de la devolución de llamada. Es
initialValue
para la primera llamada si se proporciona, - currentValue: el elemento actual que se pasa de la matriz.
- acumulador: acumula los valores de retorno de la devolución de llamada. Es
- initialValue (opcional): un valor al que se le pasará
callback()
en la primera llamada. Si no se proporciona, el último elemento actúa como acumulador en la primera llamada ycallback()
no se ejecutará en él.
Nota: Llamar reduceRight()
a una matriz vacía sin initialValue arrojará TypeError
.
Valor de retorno de reduceRight ()
- Devuelve el valor resultante después de reducir la matriz.
Notas :
reduceRight()
ejecuta la función dada para cada valor de derecha a izquierda.reduceRight()
no cambia la matriz original.- Casi siempre es más seguro proporcionarlo
initialValue
.
Ejemplo 1: Suma de todos los valores de la matriz
const numbers = (1, 2, 3, 4, 5, 6); function sum_reducer(accumulator, currentValue) ( return accumulator + currentValue; ) let sum = numbers.reduceRight(sum_reducer); console.log(sum); // 21 // using arrow function let summation = numbers.reduceRight( (accumulator, currentValue) => accumulator + currentValue ); console.log(summation); // 21
Salida
21 21
Ejemplo 2: Restar números en una matriz
const numbers = (50, 300, 20, 100, 1800); // subtract all numbers from last number // since 1st element is called as accumulator rather than currentValue // 1800 - 100 - 20 - 300 - 50 let difference = numbers.reduceRight( (accumulator, currentValue) => accumulator - currentValue ); console.log(difference); // 1330 const expenses = (1800, 2000, 3000, 5000, 500); const salary = 15000; // function that subtracts all array elements from given number // 15000 - 500 - 5000 - 3000 - 2000 - 1800 let remaining = expenses.reduceRight( (accumulator, currentValue) => accumulator - currentValue, salary ); console.log(remaining); // 2700
Salida
1330 2700
Este ejemplo explica claramente la diferencia entre pasar un initialValue y no pasar un initialValue.
Ejemplo 3: crear funciones compuestas
// create composite functions const composite = (… args) => (initialArg) => args.reduceRight((acc, fn) => fn(acc), initialArg); const sqrt = (value) => Math.sqrt(value); const double = (value) => 2 * value; const newFunc = composite(sqrt, double); // ( 32 * 2 ) ** 0.5 let result = newFunc(32); console.log(result); // 8
Salida
8
Sabemos que la composición de funciones es la forma en que el resultado de una función se pasa a otra función. La ejecución ocurre de derecha a izquierda, por lo que podemos aprovechar la reduceRight()
función.
En este ejemplo, hemos creado una composite()
función que acepta un número arbitrario de argumentos. Esta función devuelve otra función que toma initialArg
y devuelve este valor reducido aplicándolo contra funciones dadas de derecha a izquierda.
Lectura recomendada: JavaScript Array reduce ()