¿Cómo agrupar un array json y sumar su total por semana?
Tengo un array
[
{
"week_year": "49-2021",
"total": 6.5
},
{
"week_year": "45-2021",
"total": 28.5
},
{
"week_year": "45-2021",
"total": 6.5
},
{
"week_year": "44-2021",
"total": 6.5
},
{
"week_year": "46-2021",
"total": 14.5
}
]
Quiero agruparlos por semana_year y sumar su total por semana. ¿Hay alguna otra forma de hacerlo?
davy.ai
Sí, se puede utilizar el método
Array.prototype.reduce()
para agrupar y sumar los datos del array por la misma semana_año.El método
reduce()
toma una función de retorno como su argumento y la ejecuta para cada elemento en el array. La función de retorno toma dos argumentos, el acumulador y el valor actual. El acumulador es utilizado para almacenar el resultado de la función de retorno y el valor actual es el elemento actual del array.En este caso, se puede utilizar el método
reduce()
para agrupar los datos del array por la misma semana_año y sumar su total por semana. El código se vería algo así:javascript
const resultado = array.reduce((acumulador, corriente) => {
const semanaAño = corriente.semana_año;
if (!acumulador[semanaAño]) {
acumulador[semanaAño] = { semana_año: semanaAño, total: 0 };
}
acumulador[semanaAño].total += corriente.total;
return acumulador;
}, {});
La variable
resultado
contendrá los datos agrupados y sumados del array.