JavaScript Array, méthode de réduction ()

La description

Tableau Javascript reduce() applique une fonction simultanément à deux valeurs du tableau (de gauche à droite) pour le réduire à une seule valeur.

Syntaxe

Sa syntaxe est la suivante -

array.reduce(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 rappel.

Valeur de retour

Renvoie la valeur unique 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.reduce) {
   Array.prototype.reduce = function(fun /*, initial*/) {
      var len = this.length;
      
      if (typeof fun != "function")
      throw new TypeError();
      
      // no value to return if no initial value and an empty array
      if (len == 0 && arguments.length == 1)
      throw new TypeError();
      
      var i = 0;
      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 >= len)
            throw new TypeError();
         }
         while (true);
      }
      for (; i < len; 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 reduce Method</title>
   </head>
   
   <body>   
      <script type = "text/javascript">
         if (!Array.prototype.reduce) {
            Array.prototype.reduce = function(fun /*, initial*/) {
               var len = this.length;
               
               if (typeof fun != "function")
               throw new TypeError();
               
               // no value to return if no initial value and an empty array
               if (len == 0 && arguments.length == 1)
               throw new TypeError();
               
               var i = 0;
               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 >= len)
                     throw new TypeError();
                  }
                  while (true);
               }
               for (; i < len; i++) {
                  if (i in this)
                  rv = fun.call(null, rv, this[i], i, this);
               }
               return rv;
            };
         }
         var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });
         document.write("total is : " + total ); 
      </script>      
   </body>
</html>

Production

total is : 6