Metode JavaScript Array reducRight () izpilda reduktora funkciju katram masīva elementam un pielieto to pret akumulatoru.
Metodes sintakse reduceRight()
ir šāda:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Lūk, arr ir masīvs.
reducRight () parametri
reduceRight()
Metode ņem in:
- atzvanīšana - funkcija, kas jāizpilda katram masīva elementam. Tas aizņem:
- akumulators - tas uzkrāj atzvanīšanas atgriešanās vērtības. Tas ir
initialValue
paredzēts pirmajam zvanam, ja tas tiek piegādāts, - currentValue - pašreizējais elements, kas tiek nodots no masīva.
- akumulators - tas uzkrāj atzvanīšanas atgriešanās vērtības. Tas ir
- sākotnējā vērtība (pēc izvēles) - vērtība, kas tiks pārsūtīta
callback()
uz pirmo zvanu. Ja tas nav norādīts, pēdējais elements darbojas kā akumulators pirmajā zvanā uncallback()
to neizpilda.
Piezīme. Izsaucot reduceRight()
tukšu masīvu bez sākotnējās vērtības, tiks izmesti TypeError
.
Atgriezeniskā vērtība no reducRight ()
- Atgriež vērtību, kas iegūta pēc masīva samazināšanas.
Piezīmes :
reduceRight()
izpilda doto funkciju katrai vērtībai no labās uz kreiso pusi.reduceRight()
nemaina sākotnējo masīvu.- Gandrīz vienmēr ir drošāk to nodrošināt
initialValue
.
1. piemērs: visu masīva vērtību 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
Rezultāts
21 21
2. piemērs: skaitļu atņemšana masīvā
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
Rezultāts
1330 2700
Šis piemērs skaidri izskaidro atšķirību starp sākotnējās vērtības un sākotnējās vērtības nenokļūšanu.
3. piemērs: salikto funkciju izveide
// 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
Rezultāts
8
Mēs zinām, ka funkciju sastāvs ir veids, kā vienas funkcijas rezultāts tiek nodots citai funkcijai. Izpilde notiek no labās uz kreiso pusi, tāpēc mēs varam izmantot reduceRight()
funkcijas priekšrocības .
Šajā piemērā mēs esam izveidojuši composite()
funkciju, kas uzņem patvaļīgu skaitu argumentu. Šī funkcija atgriež vēl vienu funkciju, kas uzņem initialArg
un atgriež šo vērtību, samazinot to, piemērojot to pret dotajām funkcijām no labās uz kreiso.
Ieteicams lasīt: JavaScript masīva samazināšana ()