La méthode JavaScript Array reductionRight () exécute une fonction de réduction sur chaque élément du tableau et l'applique à un accumulateur.
La syntaxe de la reduceRight()
méthode est:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Ici, arr est un tableau.
Paramètres de réductionRight ()
La reduceRight()
méthode prend en compte:
- callback - La fonction à exécuter sur chaque élément du tableau. Il prend en:
- accumulator - Il accumule les valeurs de retour du rappel. C'est
initialValue
pour le premier appel si fourni, - currentValue - L'élément actuel transmis depuis le tableau.
- accumulator - Il accumule les valeurs de retour du rappel. C'est
- initialValue (facultatif) - Une valeur qui sera transmise au
callback()
premier appel. S'il n'est pas fourni, le dernier élément agit comme accumulateur lors du premier appel etcallback()
ne s'exécutera pas dessus.
Remarque: L' appel reduceRight()
sur un tableau vide sans initialValue lancera TypeError
.
Valeur renvoyée par reductionRight ()
- Renvoie la valeur obtenue après la réduction du tableau.
Remarques :
reduceRight()
exécute la fonction donnée pour chaque valeur de droite à gauche.reduceRight()
ne modifie pas la matrice d'origine.- Il est presque toujours plus sûr de fournir
initialValue
.
Exemple 1: Somme de toutes les valeurs du tableau
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
Production
21 21
Exemple 2: soustraction de nombres dans un tableau
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
Production
1330 2700
Cet exemple explique clairement la différence entre passer un initialValue et ne pas passer un initialValue.
Exemple 3: créer des fonctions composites
// 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
Production
8
Nous savons que la composition de fonctions est la manière dont le résultat d'une fonction est passé à une autre fonction. L'exécution se fait de droite à gauche, nous pouvons donc profiter de la reduceRight()
fonction.
Dans cet exemple, nous avons créé une composite()
fonction qui prend un nombre arbitraire d'arguments. Cette fonction renvoie une autre fonction qui prend initialArg
et retourne cette valeur réduite en l'appliquant à des fonctions données de droite à gauche.
Lecture recommandée: JavaScript Array réduire ()