Tengo el siguiente array de objetos y me gustaría agruparlos por mes, año y U_Subrubro. Intenté con reduce pero no logro hacerlo:
const reducedDocs = array.reduce((acc, curr) => {
const { ANIO, MES, U_Subrubros, Cantidad } = curr;
const [year] = ANIO,
const [month] = MES,
if (!acc[U_Subrubros]) acc[U_Subrubros] = {};
if (!acc[U_Subrubros][year]) acc[U_Subrubros][year] = {};
if (!acc[U_Subrubros][year][month]) acc[U_Subrubros][year][month] = 0;
acc[U_Subrubros][year][month] += Cantidad;
return acc;
}, {});
console.log(‘Items Cantidad’,reducedDocs);
Mi objeto es el siguiente:
[
{
"ANIO": 2022,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 45,
"MontoVenta": 146446.44
},
{
"ANIO": 2019,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 14,
"MontoVenta": 18061.96
},
{
"ANIO": 2019,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 43,
"MontoVenta": 67809.81
},
{
"ANIO": 2019,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 7,
"MontoVenta": 21404.95
},
{
"ANIO": 2019,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 2479.33
},
{
"ANIO": 2019,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 3,
"MontoVenta": 3222
},
{
"ANIO": 2020,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 69,
"MontoVenta": 109338.71
},
{
"ANIO": 2020,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 48,
"MontoVenta": 54374.69
},
{
"ANIO": 2020,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 10,
"MontoVenta": 32231.4
},
{
"ANIO": 2020,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 4,
"MontoVenta": 5041.33
},
{
"ANIO": 2020,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 3719.01
},
{
"ANIO": 2020,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 49,
"MontoVenta": 69132.12
},
{
"ANIO": 2020,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 14,
"MontoVenta": 16198.28
},
{
"ANIO": 2020,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 10,
"MontoVenta": 32231.4
},
{
"ANIO": 2020,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 2,
"MontoVenta": 1776.85
},
{
"ANIO": 2020,
"MES": 3,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 47,
"MontoVenta": 73140.37
},
{
"ANIO": 2020,
"MES": 3,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 7,
"MontoVenta": 5619.8
},
{
"ANIO": 2020,
"MES": 3,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 7,
"MontoVenta": 8099.14
},
{
"ANIO": 2020,
"MES": 3,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 1,
"MontoVenta": 3471.07
},
{
"ANIO": 2020,
"MES": 4,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 6,
"MontoVenta": 10247.94
},
{
"ANIO": 2020,
"MES": 4,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 2,
"MontoVenta": 6942.14
},
{
"ANIO": 2020,
"MES": 4,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 1,
"MontoVenta": 826.44
},
{
"ANIO": 2020,
"MES": 5,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 24,
"MontoVenta": 36529.07
},
{
"ANIO": 2020,
"MES": 5,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 1,
"MontoVenta": 1157.02
},
{
"ANIO": 2020,
"MES": 5,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 3057.85
},
{
"ANIO": 2020,
"MES": 5,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 6,
"MontoVenta": 20826.42
},
{
"ANIO": 2020,
"MES": 5,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 4,
"MontoVenta": 3223.12
},
{
"ANIO": 2020,
"MES": 6,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 16,
"MontoVenta": 56198.27
},
{
"ANIO": 2020,
"MES": 6,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 63,
"MontoVenta": 104214.9
},
{
"ANIO": 2020,
"MES": 6,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 3,
"MontoVenta": 10909.09
},
{
"ANIO": 2020,
"MES": 6,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 5,
"MontoVenta": 4539.65
},
{
"ANIO": 2020,
"MES": 7,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 46,
"MontoVenta": 89173.48
},
{
"ANIO": 2020,
"MES": 7,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 2,
"MontoVenta": 7603.31
},
{
"ANIO": 2020,
"MES": 7,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 12,
"MontoVenta": 45206.5
},
{
"ANIO": 2020,
"MES": 7,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 15,
"MontoVenta": 20701.84
},
{
"ANIO": 2020,
"MES": 8,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 62,
"MontoVenta": 128512.34
},
{
"ANIO": 2020,
"MES": 8,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 17,
"MontoVenta": 66867.65
},
{
"ANIO": 2020,
"MES": 8,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 16,
"MontoVenta": 17768.65
},
{
"ANIO": 2020,
"MES": 8,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 3471.08
},
{
"ANIO": 2020,
"MES": 9,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 73,
"MontoVenta": 152396.63
},
{
"ANIO": 2020,
"MES": 9,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 17,
"MontoVenta": 17355.42
},
{
"ANIO": 2020,
"MES": 9,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 23,
"MontoVenta": 94851.08
},
{
"ANIO": 2020,
"MES": 9,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 4132.23
},
{
"ANIO": 2020,
"MES": 10,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 15,
"MontoVenta": 15371.94
},
{
"ANIO": 2020,
"MES": 10,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 56,
"MontoVenta": 117768.55
},
{
"ANIO": 2020,
"MES": 10,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 10,
"MontoVenta": 41239.6
},
{
"ANIO": 2020,
"MES": 11,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 41,
"MontoVenta": 113719.2
},
{
"ANIO": 2020,
"MES": 11,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 23,
"MontoVenta": 37892.67
},
{
"ANIO": 2020,
"MES": 11,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 7,
"MontoVenta": 31363.6
},
{
"ANIO": 2020,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 18,
"MontoVenta": 22892.62
},
{
"ANIO": 2020,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 40,
"MontoVenta": 104545.66
},
{
"ANIO": 2020,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 7,
"MontoVenta": 37603.3
},
{
"ANIO": 2021,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 20,
"MontoVenta": 107438
},
{
"ANIO": 2021,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 23,
"MontoVenta": 36115.79
},
{
"ANIO": 2021,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 76,
"MontoVenta": 192314.45
},
{
"ANIO": 2021,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 2,
"MontoVenta": 3305.8
},
{
"ANIO": 2021,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000121",
"Cantidad": 1,
"MontoVenta": 888.43
},
{
"ANIO": 2021,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 54,
"MontoVenta": 142975.48
},
{
"ANIO": 2021,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 10,
"MontoVenta": 13512.43
},
{
"ANIO": 2021,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 14,
"MontoVenta": 72728
},
{
"ANIO": 2020,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 14,
"MontoVenta": 16198.28
},
{
"ANIO": 2021,
"MES": 7,
"BPLName": "003",
"U_Subrubros": "00000189",
"Cantidad": 49,
"MontoVenta": 131900.91
},
{
"ANIO": 2021,
"MES": 5,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 2,
"MontoVenta": 2644.62
},
{
"ANIO": 2020,
"MES": 6,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 5,
"MontoVenta": 4539.65
},
{
"ANIO": 2021,
"MES": 11,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 12,
"MontoVenta": 79338.84
},
{
"ANIO": 2020,
"MES": 6,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 3,
"MontoVenta": 10909.09
},
{
"ANIO": 2020,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 2,
"MontoVenta": 1776.85
},
{
"ANIO": 2020,
"MES": 3,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 7,
"MontoVenta": 5619.8
},
{
"ANIO": 2021,
"MES": 10,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 3305.79
},
{
"ANIO": 2021,
"MES": 10,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 5,
"MontoVenta": 8428.56
},
{
"ANIO": 2020,
"MES": 8,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 17,
"MontoVenta": 66867.65
},
{
"ANIO": 2020,
"MES": 9,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 23,
"MontoVenta": 94851.08
},
{
"ANIO": 2020,
"MES": 9,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 4132.23
},
{
"ANIO": 2020,
"MES": 10,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 10,
"MontoVenta": 41239.6
},
{
"ANIO": 2020,
"MES": 3,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 7,
"MontoVenta": 8099.14
},
{
"ANIO": 2021,
"MES": 4,
"BPLName": "003",
"U_Subrubros": "00000121",
"Cantidad": 1,
"MontoVenta": 3719.01
},
{
"ANIO": 2020,
"MES": 5,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 6,
"MontoVenta": 20826.42
},
{
"ANIO": 2020,
"MES": 4,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 2,
"MontoVenta": 6942.14
},
{
"ANIO": 2020,
"MES": 5,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 1,
"MontoVenta": 1157.02
},
{
"ANIO": 2020,
"MES": 11,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 7,
"MontoVenta": 31363.6
},
{
"ANIO": 2021,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 2,
"MontoVenta": 3305.8
},
{
"ANIO": 2020,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 3719.01
},
{
"ANIO": 2021,
"MES": 9,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 3,
"MontoVenta": 4958.68
},
{
"ANIO": 2020,
"MES": 8,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 3471.08
},
{
"ANIO": 2021,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 2,
"MontoVenta": 3305.8
},
{
"ANIO": 2020,
"MES": 3,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 1,
"MontoVenta": 3471.07
},
{
"ANIO": 2021,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000121",
"Cantidad": 1,
"MontoVenta": 888.43
},
{
"ANIO": 2020,
"MES": 4,
"BPLName": "003",
"U_Subrubros": "00000611",
"Cantidad": 1,
"MontoVenta": 826.44
},
{
"ANIO": 2021,
"MES": 4,
"BPLName": "003",
"U_Subrubros": "00000192",
"Cantidad": 1,
"MontoVenta": 3719.01
},
{
"ANIO": 2021,
"MES": 11,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 8,
"MontoVenta": 13387.23
},
{
"ANIO": 2022,
"MES": 1,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 5,
"MontoVenta": 33057.85
},
{
"ANIO": 2021,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000200",
"Cantidad": 3,
"MontoVenta": 4958.67
},
{
"ANIO": 2021,
"MES": 12,
"BPLName": "003",
"U_Subrubros": "00000124",
"Cantidad": 8,
"MontoVenta": 52892.56
},
{
"ANIO": 2021,
"MES": 2,
"BPLName": "003",
"U_Subrubros": "00000121",
"Cantidad": -1,
"MontoVenta": -888.43
}
]
Como podría hacer para agrupar por ANIO, MES y U_Subrubros? Estoy seguro que es con reduce pero no se como