JavaScript Array reduceRight () -metoden utfører en reduseringsfunksjon på hvert element i matrisen og bruker den på en akkumulator.
Syntaksen til reduceRight()
metoden er:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Her er arr en matrise.
reducRight () -parametere
Den reduceRight()
metoden tar i:
- tilbakeringing - Funksjonen som skal utføres på hvert matriseelement. Det tar inn:
- akkumulator - Den akkumulerer tilbakeringingsverdiene. Det er
initialValue
for den første samtalen hvis den er levert, - currentValue - Det nåværende elementet som sendes fra matrisen.
- akkumulator - Den akkumulerer tilbakeringingsverdiene. Det er
- initialValue (valgfritt) - En verdi som overføres til
callback()
ved første samtale. Hvis ikke gitt, fungerer det siste elementet som akkumulator ved første samtale ogcallback()
vil ikke utføres på det.
Merk: Å ringe reduceRight()
på en tom matrise uten initialValue vil kaste TypeError
.
Returverdi fra reduceRight ()
- Returnerer verdien som resulterer etter å ha redusert matrisen.
Merknader :
reduceRight()
utfører den gitte funksjonen for hver verdi fra høyre til venstre.reduceRight()
endrer ikke den opprinnelige matrisen.- Det er nesten alltid tryggere å tilby
initialValue
.
Eksempel 1: Summen av alle verdier av 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
Produksjon
21 21
Eksempel 2: Trekk fra tall i matrise
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
Produksjon
1330 2700
Dette eksemplet forklarer tydelig forskjellen mellom å sende en initialverdi og ikke å sende en initialverdi.
Eksempel 3: Lag sammensatte funksjoner
// 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
Produksjon
8
Vi vet at funksjonssammensetning er måten resultatet fra en funksjon overføres til en annen funksjon. Utførelsen skjer fra høyre til venstre, slik at vi kan dra nytte av reduceRight()
funksjonen.
I dette eksemplet har vi opprettet en composite()
funksjon som tar inn et vilkårlig antall argumenter. Denne funksjonen returnerer en annen funksjon som tar inn initialArg
og returnerer denne verdien redusert ved å bruke den mot gitte funksjoner fra høyre til venstre.
Anbefalt lesing: JavaScript Array redusere ()