Método JavaScript Array reduce ()

Descripción

Matriz de JavaScript reduce() El método aplica una función simultáneamente contra dos valores de la matriz (de izquierda a derecha) para reducirla a un solo valor.

Sintaxis

Su sintaxis es la siguiente:

array.reduce(callback[, initialValue]);

Detalles de los parámetros

  • callback - Función a ejecutar en cada valor de la matriz.

  • initialValue - Objeto para usar como primer argumento en la primera llamada de la devolución de llamada.

Valor devuelto

Devuelve el valor único reducido de la matriz.

Compatibilidad

Este método es una extensión de JavaScript del estándar ECMA-262; como tal, puede que no esté presente en otras implementaciones del estándar. Para que funcione, debe agregar el siguiente código en la parte superior de su secuencia de comandos.

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;
   };
}

Ejemplo

Pruebe el siguiente ejemplo.

<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>

Salida

total is : 6