Η μέθοδος JavaScript Array lessRight () εκτελεί μια λειτουργία μειωτή σε κάθε στοιχείο του πίνακα και την εφαρμόζει σε έναν συσσωρευτή.
Η σύνταξη της reduceRight()
μεθόδου είναι:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Εδώ, arr είναι ένας πίνακας.
παράμετροι μείωσηRight ()
Η reduceRight()
μέθοδος περιλαμβάνει:
- callback - Η λειτουργία για εκτέλεση σε κάθε στοιχείο πίνακα. Παίρνει:
- συσσωρευτής - συσσωρεύει τις τιμές επιστροφής της επιστροφής. Είναι
initialValue
για την πρώτη κλήση εάν παρέχεται, - currentValue - Το τρέχον στοιχείο που περνά από τον πίνακα.
- συσσωρευτής - συσσωρεύει τις τιμές επιστροφής της επιστροφής. Είναι
- initialValue (προαιρετικό) - Μια τιμή στην οποία θα μεταδοθεί
callback()
στην πρώτη κλήση. Εάν δεν παρέχεται, το τελευταίο στοιχείο λειτουργεί ως συσσωρευτής στην πρώτη κλήση καιcallback()
δεν θα εκτελεστεί σε αυτό.
Σημείωση: Η κλήση reduceRight()
σε έναν κενό πίνακα χωρίς αρχική τιμή θα εμφανιστεί TypeError
.
Επιστροφή τιμής από μείωσηRight ()
- Επιστρέφει την τιμή που προκύπτει μετά τη μείωση του πίνακα.
Σημειώσεις :
reduceRight()
εκτελεί τη δεδομένη συνάρτηση για κάθε τιμή από δεξιά προς αριστερά.reduceRight()
δεν αλλάζει τον αρχικό πίνακα.- Είναι σχεδόν πάντα ασφαλέστερο να παρέχετε
initialValue
.
Παράδειγμα 1: Άθροισμα όλων των τιμών της συστοιχίας
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
Παραγωγή
21 21
Παράδειγμα 2: Αφαίρεση αριθμών σε συστοιχία
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
Παραγωγή
1330 2700
Αυτό το παράδειγμα εξηγεί με σαφήνεια τη διαφορά μεταξύ μεταβίβασης μιας αρχικής τιμής και μη διαβίβασης μιας αρχικής τιμής
Παράδειγμα 3: Δημιουργία σύνθετων συναρτήσεων
// 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
Παραγωγή
8
Γνωρίζουμε ότι η σύνθεση συνάρτησης είναι ο τρόπος με τον οποίο το αποτέλεσμα από μία συνάρτηση μεταφέρεται σε μια άλλη συνάρτηση. Η εκτέλεση γίνεται από δεξιά προς τα αριστερά, ώστε να μπορούμε να εκμεταλλευτούμε τη reduceRight()
λειτουργία.
Σε αυτό το παράδειγμα, έχουμε δημιουργήσει μια composite()
συνάρτηση που λαμβάνει έναν αυθαίρετο αριθμό ορισμάτων. Αυτή η συνάρτηση επιστρέφει μια άλλη συνάρτηση που λαμβάνει initialArg
και επιστρέφει αυτήν την τιμή μειωμένη εφαρμόζοντας την σε δεδομένες συναρτήσεις από δεξιά προς αριστερά.
Συνιστώμενη ανάγνωση: Μείωση σειράς JavaScript ()