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