JavaScript Array reducRight () -menetelmä suorittaa pienennysfunktion matriisin jokaiselle elementille ja soveltaa sitä akkuun.
Menetelmän syntaksi reduceRight()
on:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Tässä arr on taulukko.
reducRight () -parametrit
reduceRight()
Menetelmä vie:
- takaisinsoitto - toiminto, joka suoritetaan jokaiselle taulukkoelementille. Se vie:
- akku - Se kerää takaisinsoiton paluuarvot. Se on
initialValue
ensimmäinen puhelu, jos se toimitetaan, - currentValue - Nykyinen elementti, joka välitetään matriisista.
- akku - Se kerää takaisinsoiton paluuarvot. Se on
- initialValue (valinnainen) - Arvo, joka välitetään
callback()
ensimmäisen puhelun yhteydessä. Jos sitä ei anneta, viimeinen elementti toimii ensimmäisen puheluncallback()
akuna eikä suorita sitä.
Huomaa:reduceRight()
Tyhjälle taulukolle kutsuminen ilman initialValue-arvoa heittää TypeError
.
Palautusarvo alkaen reducRight ()
- Palauttaa matriisin pienentämisen jälkeen saadun arvon.
Huomautuksia :
reduceRight()
suorittaa annetun arvon jokaiselle arvolle oikealta vasemmalle.reduceRight()
ei muuta alkuperäistä taulukkoa.- Se on melkein aina turvallisempaa tarjota
initialValue
.
Esimerkki 1: Matriisin kaikkien arvojen summa
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
Tuotos
21 21
Esimerkki 2: Numeroiden vähentäminen taulukosta
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
Tuotos
1330 2700
Tämä esimerkki selittää selvästi eron alkuperäisen arvon ja alkuperäisen arvon välittymisen välillä.
Esimerkki 3: Luo komposiittitoiminnot
// 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
Tuotos
8
Tiedämme, että funktiokoostumus on tapa, jolla yhden funktion tulos siirretään toiselle funktiolle. Suoritus tapahtuu oikealta vasemmalle, joten voimme hyödyntää reduceRight()
toimintoa.
Tässä esimerkissä olemme luoneet composite()
funktion, joka ottaa mielivaltaisen määrän argumentteja. Tämä funktio palauttaa toisen toiminnon, joka ottaa vastaan initialArg
ja palauttaa tämän arvon pienennettynä soveltamalla sitä annettuihin funktioihin oikealta vasemmalle.
Suositeltava lukeminen: JavaScript-matriisin vähennys ()