| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce | [Back] [Original] |
Get to know MDN better
Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.
This feature is well established and works across many devices and browser versions. Its been available across browsers since julio de 2015.
El mtodo reduce() ejecuta una funcin reductora sobre cada elemento de un array, devolviendo como resultado un nico valor.
const array1 = [1, 2, 3, 4];
// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce(
(accumulator, currentValue) => accumulator + currentValue,
initialValue,
);
console.log(sumWithInitial);
// Expected output: 10
La funcin reductora recibe cuatro argumentos:
acc)cur)idx)src)El valor devuelto de la funcin reductora se asigna al acumulador, cuyo valor se recuerda en cada iteracin de la matriz y, en ltima instancia, se convierte en el valor final, nico y resultante.
arr.reduce(callback(acumulador, valorActual[, ndice[, array]])[, valorInicial])
callbackFuncin a ejecutar sobre cada elemento del array (excepto para el primero, si no se proporciona valorInicial), que recibe cuatro parmetros:_ acumulador
_ : El acumulador acumula el valor devuelto por la funcin callback. Es el valor acumulado devuelto en la ltima invocacin de callback, o el valorInicial, si se provey. (Ver a continuacin).
valorActualEl elemento actual que est siendo procesado en el array.
ndice OpcionalEl ndice del elemento actual que est siendo procesado en el array. Empieza desde el ndice 0 si se provee valorInicial. En caso contrario, comienza desde el ndice 1.
array OpcionalEl array sobre el cual se llam el mtodo reduce().
valorInicial OpcionalUn valor a usar como primer argumento en la primera llamada de la funcin callback. Si no se proporciona el valorInicial, el primer elemento del array ser utilizado y saltado. Llamando a reduce() sobre un array vaco sin un valorInicial lanzar un TypeError.
El mtodo reduce() ejecuta callback una vez por cada elemento presente en el array, excluyendo los huecos del mismo, recibe cuatro argumentos:
valorAnteriorvalorActualindiceActualarrayLa primera vez que se llama la funcin, valorAnterior y valorActual pueden tener uno de dos valores. Si se provey un valorInicial al llamar a reduce, entonces valorAnterior ser igual al valorInicial y valorActual ser igual al primer elemento del array. Si no se provey un valorInicial, entonces valorAnterior ser igual al primer valor en el array y valorActual ser el segundo.
Si el array est vaco y no se provey un valorInicial lanzar un TypeError. Si el array tiene un slo elemento (sin importar la posicin) y no se provey un valorInicial, o si se provey un valorInicial pero el arreglo est vaco, se retornar ese nico valor sin llamar a la funcin.
Suponga que ocurre el siguiente uso de reduce:
[0, 1, 2, 3, 4].reduce(function (valorAnterior, valorActual, indice, vector) {
return valorAnterior + valorActual;
});
// Primera llamada
((valorAnterior = 0), (valorActual = 1), (indice = 1));
// Segunda llamada
((valorAnterior = 1), (valorActual = 2), (indice = 2));
// Tercera llamada
((valorAnterior = 3), (valorActual = 3), (indice = 3));
// Cuarta llamada
((valorAnterior = 6), (valorActual = 4), (indice = 4));
// el array sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4]
// Valor Devuelto: 10
Y si proporcionas un valorInicial, el resultado sera como este:
[0, 1, 2, 3, 4].reduce(function (valorAnterior, valorActual, indice, vector) {
return valorAnterior + valorActual;
}, 10);
// Primera llamada
((valorAnterior = 10), (valorActual = 0), (indice = 0));
// Segunda llamada
((valorAnterior = 10), (valorActual = 1), (indice = 1));
// Tercera llamada
((valorAnterior = 11), (valorActual = 2), (indice = 2));
// Cuarta llamada
((valorAnterior = 13), (valorActual = 3), (indice = 3));
// Quinta llamada
((valorAnterior = 16), (valorActual = 4), (indice = 4));
// el array sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4]
// Valor Devuelto: 20
Nota: Polyfill se refiere a unas lneas de cdigo o un plugin que permite "tener" (en realidad se simulan de alguna otra manera) las nuevas funcionalidades de HTML5 en aquellos navegadores que nativamente no lo soportan. Consigue que, en adelante, el cdigo sea transparente para el programador, como si el navegador soportase la funcionalidad nativamente.
reduce es una extensin de JavaScript al estndar ECMA-262; como tal puede que no est presente en otras implementaciones del estndar. Puedes trabajar con sto insertando el siguiente cdigo al comienzo de tus scripts, permitiendo el uso de reduce en implementaciones de ECMA-262 que no lo implementan de modo nativo. Este algoritmo es exactamente el mismo usando en Firefox y SpiderMonkey.
if (!Array.prototype.reduce) {
Array.prototype.reduce = function (fun /*, inicial*/) {
var longitud = this.length;
if (typeof fun != "function") throw new TypeError();
// no se devuelve ningn valor si no hay valor inicial y el array est vaco
if (longitud == 0 && arguments.length == 1) throw new TypeError();
var indice = 0;
if (arguments.length >= 2) {
var rv = arguments[1];
} else {
do {
if (indice in this) {
rv = this[indice++];
break;
}
// si el array no contiene valores, no existe valor inicial a devolver
if (++indice >= longitud) throw new TypeError();
} while (true);
}
for (; indice < longitud; indice++) {
if (indice in this) rv = fun.call(null, rv, this[indice], indice, this);
}
return rv;
};
}
arrayvar total = [0, 1, 2, 3].reduce(function (a, b) {
return a + b;
});
// total == 6
array a partir de varios arraysvar integrado = [
[0, 1],
[2, 3],
[4, 5],
].reduce(function (a, b) {
return a.concat(b);
});
// integrado es [0, 1, 2, 3, 4, 5]
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-array.prototype.reduce |
This page was last modified on 29 may 2026 by MDN contributors.
ArrayArray.prototype.at()Array.prototype.concat()Array.prototype.copyWithin()Array.prototype.entries()Array.prototype.every()Array.prototype.fill()Array.prototype.filter()Array.prototype.find()Array.prototype.findIndex()findLast()findLastIndex()Array.prototype.flat()Array.prototype.flatMap()Array.prototype.forEach()Array.prototype.includes()Array.prototype.indexOf()Array.prototype.join()Array.prototype.keys()Array.prototype.lastIndexOf()Array.prototype.map()Array.prototype.pop()Array.prototype.push()Array.prototype.reduce()Array.prototype.reduceRight()Array.prototype.reverse()Array.prototype.shift()Array.prototype.slice()Array.prototype.some()Array.prototype.sort()Array.prototype.splice()Array.prototype.toLocaleString()toReversed()Array.prototype.toSorted()toSpliced()Array.prototype.toString()Array.prototype.unshift()Array.prototype.values()with()Array.prototype[@@iterator]()Object/FunctionYour blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |