JavaScript - Método Array reduceRight ()

Descripción

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

Sintaxis

Su sintaxis es la siguiente:

array.reduceRight(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 para la primera llamada de la devolución de llamada

Valor devuelto

Devuelve el valor único reducido a la derecha 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.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;
   };
}

Ejemplo

Pruebe el siguiente ejemplo.

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

Salida

total is : 6