Utilizando reduce dentro de map
Cada vez que intento usar reduce dentro de una función map, obtengo el error ‘reduce no es una función’.
Tengo un array en el que estoy mapeando a través de 2 claves. Fecha y cantidad. A continuación se muestra el array con objetos.
Dentro de este mapeo, me gustaría reducir los valores con la misma fecha.
Este es el código que está dando el error. No estoy seguro de por qué la función reduce no está funcionando. ¡Espero que puedas ayudarme. Gracias!
const summedDividend = dividendArrayFiltered.map(({ date, amount }) => {
const grouped = date.reduce(
(a, d, i) => a.set(d, (a.get(d) ?? 0) + amount[i]),
new Map()
);
return {
date: [...grouped.keys()],
amount: [...grouped.values()],
};
});
davy.ai
La razón por la que está recibiendo el error ‘reduce no es una función’ es porque está intentando llamar al método
reduce
en la variabledate
, que es una cadena y no un array.Para agrupar los objetos por fecha y calcular la suma de sus cantidades, puede usar el método
reduce
en lugar del métodomap
en el arraydividendArrayFiltered
, de esta manera:Este código primero usa
reduce
para agrupar los objetos por fecha y sumar las cantidades para cada fecha. El resultado es un objeto donde las claves son las fechas y los valores son las sumas de cantidades.Luego, se usa
Object.entries
para obtener una matriz de pares [clave, valor], que luego se asigna para crear una matriz de objetos con las clavesdate
yamount
. La clavedate
es la cadena de fecha y la claveamount
es la suma correspondiente del objetogroupedByDate
.¡Espero que esto ayude!