O método ReduzirRight () de Array de JavaScript executa uma função redutora em cada elemento da matriz e a aplica em um acumulador.
A sintaxe do reduceRight()
método é:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Aqui, arr é um array.
Parâmetros reduzirRight ()
O reduceRight()
método inclui:
- retorno de chamada - a função a ser executada em cada elemento da matriz. Inclui:
- acumulador - acumula os valores de retorno do retorno de chamada. É
initialValue
para a primeira chamada, se fornecida, - currentValue - O elemento atual que está sendo passado da matriz.
- acumulador - acumula os valores de retorno do retorno de chamada. É
- initialValue (opcional) - um valor que será passado
callback()
na primeira chamada. Se não for fornecido, o último elemento atua como o acumulador na primeira chamada ecallback()
não será executado nele.
Nota: Chamar reduceRight()
uma matriz vazia sem initialValue irá lançar TypeError
.
Valor de retorno de reduzRight ()
- Retorna o valor resultante após a redução da matriz.
Notas :
reduceRight()
executa a função fornecida para cada valor da direita para a esquerda.reduceRight()
não altera a matriz original.- Quase sempre é mais seguro fornecer
initialValue
.
Exemplo 1: Soma de todos os valores da 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
Resultado
21 21
Exemplo 2: subtraindo números na 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
Resultado
1330 2700
Este exemplo explica claramente a diferença entre passar um initialValue e não passar um initialValue.
Exemplo 3: criar funções compostas
// 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
Resultado
8
Sabemos que a composição da função é a maneira pela qual o resultado de uma função é passado para outra função. A execução acontece da direita para a esquerda, para que possamos aproveitar a reduceRight()
função.
Neste exemplo, criamos uma composite()
função que recebe um número arbitrário de argumentos. Esta função retorna outra função que recebe initialArg
e retorna este valor reduzido, aplicando-o contra determinadas funções da direita para a esquerda.
Leitura recomendada: Reduzir Array JavaScript ()