JavaScript Array reduceRight () -metoden kör en reduceringsfunktion på varje element i matrisen och tillämpar den på en ackumulator.
Syntaxen för reduceRight()
metoden är:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Här är arr en matris.
reducera höger () parametrar
Den reduceRight()
metod tar in:
- callback - Funktionen att utföra på varje arrayelement. Det tar in:
- ackumulator - Den ackumulerar återuppringningsvärdena. Det är
initialValue
för det första samtalet om det tillhandahålls, - currentValue - Det aktuella elementet som skickas från matrisen.
- ackumulator - Den ackumulerar återuppringningsvärdena. Det är
- initialValue (valfritt) - Ett värde som skickas till
callback()
vid första samtalet. Om det inte tillhandahålls fungerar det sista elementet som ackumulator vid det första samtalet ochcallback()
körs inte på det.
Obs! Att anropa reduceRight()
en tom array utan initialValue kommer att kasta TypeError
.
Returvärde från reduceRight ()
- Returnerar värdet som resulterar efter att matrisen har minskats.
Anmärkningar :
reduceRight()
kör den givna funktionen för varje värde från höger till vänster.reduceRight()
ändrar inte den ursprungliga matrisen.- Det är nästan alltid säkrare att tillhandahålla
initialValue
.
Exempel 1: Summan av alla värden i matrisen
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
Produktion
21 21
Exempel 2: Subtrahera siffror i matris
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
Produktion
1330 2700
Detta exempel förklarar tydligt skillnaden mellan att skicka en initialvärde och att inte skicka en initialvärde.
Exempel 3: Skapa kompositfunktioner
// 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
Produktion
8
Vi vet att funktionssammansättning är det sätt på vilket resultatet från en funktion överförs till en annan funktion. Körningen sker från höger till vänster, så vi kan dra nytta av reduceRight()
funktionen.
I det här exemplet har vi skapat en composite()
funktion som tar in ett godtyckligt antal argument. Denna funktion returnerar en annan funktion som tar in initialArg
och returnerar detta värde reducerat genom att använda det mot givna funktioner från höger till vänster.
Rekommenderad läsning: JavaScript Array reducera ()