JavaScript - Méthode Array reductionRight ()

La description

Tableau Javascript reduceRight() applique une fonction simultanément à deux valeurs du tableau (de droite à gauche) de manière à la réduire à une seule valeur

Syntaxe

Sa syntaxe est la suivante -

array.reduceRight(callback[, initialValue]);

Détails des paramètres

  • callback - Fonction à exécuter sur chaque valeur du tableau.

  • initialValue - Objet à utiliser comme premier argument du premier appel du callback

Valeur de retour

Renvoie la valeur unique droite réduite du tableau.

Compatibilité

Cette méthode est une extension JavaScript de la norme ECMA-262; en tant que tel, il peut ne pas être présent dans d'autres implémentations de la norme. Pour que cela fonctionne, vous devez ajouter le code suivant en haut de votre script.

if (!Array.prototype.reduceRight) {
   Array.prototype.reduceRight = function(fun /*, initial*/) {
      var len = this.length;
      if (typeof fun != "function")
      throw new TypeError();
      
      // no value to return if no initial value, empty array
      if (len == 0 && arguments.length == 1)
      throw new TypeError();
      var i = len - 1;
      
      if (arguments.length >= 2) {
         var rv = arguments[1];
      } else {
         do {
            if (i in this) {
               rv = this[i--];
               break;
            }
            
            // if array contains no values, no initial value to return
            if (--i < 0)
            throw new TypeError();
         }
         while (true);
      }
      for (; i >= 0; i--) {
         if (i in this)
         rv = fun.call(null, rv, this[i], i, this);
      }
      return rv;
   };
}

Exemple

Essayez l'exemple suivant.

<html>
   <head>
      <title>JavaScript Array reduceRight Method</title>
   </head>
   
   <body>   
      <script type = "text/javascript">
         if (!Array.prototype.reduceRight) {
            Array.prototype.reduceRight = function(fun /*, initial*/) {
               var len = this.length;
               
               if (typeof fun != "function")
               throw new TypeError();
               
               // no value to return if no initial value, empty array
               if (len == 0 && arguments.length == 1)
               throw new TypeError();
               var i = len - 1;
               
               if (arguments.length >= 2) {
                  var rv = arguments[1];
               } else {
                  do {
                     if (i in this) {
                        rv = this[i--];
                        break;
                     }
                     
                     // if array contains no values, no initial value to return
                     if (--i < 0)
                     throw new TypeError();
                  }
                  while (true);
               }
               for (; i >= 0; i--) {
                  if (i in this)
                  rv = fun.call(null, rv, this[i], i, this);
               }
               return rv;
            };
         }         
         var total = [0, 1, 2, 3].reduceRight(function(a, b) { return a + b; });
         document.write("total is : " + total ); 
      </script>      
   </body>
</html>

Production

total is : 6