Metoda JavaScript Array RedRight () wykonuje funkcję redukującą na każdym elemencie tablicy i stosuje ją do akumulatora.
Składnia reduceRight()
metody to:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Tutaj arr jest tablicą.
RedukcjaRight () Parametry
reduceRight()
Sposób odbywa się:
- callback - funkcja do wykonania na każdym elemencie tablicy. Zajmuje:
- accumulator - gromadzi wartości zwracane przez callback. Dotyczy
initialValue
pierwszego połączenia, jeśli jest dostarczony, - currentValue - bieżący element przekazywany z tablicy.
- accumulator - gromadzi wartości zwracane przez callback. Dotyczy
- initialValue (opcjonalne) - Wartość, która zostanie przekazana
callback()
przy pierwszym wywołaniu. Jeśli nie zostanie podany, ostatni element działa jako akumulator przy pierwszym wywołaniu icallback()
nie zostanie na nim wykonany.
Uwaga: wywołanie reduceRight()
pustej tablicy bez initialValue spowoduje zgłoszenie TypeError
.
Wartość zwracana z redukujRight ()
- Zwraca wartość wynikową po zmniejszeniu tablicy.
Uwagi :
reduceRight()
wykonuje daną funkcję dla każdej wartości od prawej do lewej.reduceRight()
nie zmienia oryginalnej tablicy.- Zapewnienie prawie zawsze jest bezpieczniejsze
initialValue
.
Przykład 1: Suma wszystkich wartości tablicy
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
Wynik
21 21
Przykład 2: Odejmowanie liczb w tablicy
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
Wynik
1330 2700,
Ten przykład wyraźnie wyjaśnia różnicę między przekazywaniem initialValue a nieprzekazywaniem initialValue.
Przykład 3: Tworzenie funkcji złożonych
// 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
Wynik
8
Wiemy, że kompozycja funkcji to sposób, w jaki wynik z jednej funkcji jest przekazywany do innej funkcji. Wykonanie odbywa się od prawej do lewej, więc możemy skorzystać z reduceRight()
funkcji.
W tym przykładzie utworzyliśmy composite()
funkcję, która przyjmuje dowolną liczbę argumentów. Ta funkcja zwraca inną funkcję, która przyjmuje initialArg
i zwraca tę wartość pomniejszoną przez zastosowanie jej do danych funkcji od prawej do lewej.
Zalecana lektura: JavaScript Array redukuj ()