Lo que tengo es una serie de objetos, así
const data = [ { group: "Group 1", category: "G1 Cat 1", value: 50, budgetid: "53780a3b-ad3a" }, { group: "Group 1", category: "G1 Cat 1", value: 11, budgetid: "53780a3b-ad3a" }, { group: "Group 1", category: "G1 Cat 1", value: 50, budgetid: "eece3355-921e" }, { group: "Group 1", category: "G1 Cat 1", budgetid: "1a593f25-28ee", value: 25 }, { group: "Group 1", category: "G1 Cat 2", value: 5, budgetid: "53780a3b-ad3a" }, { group: "Group 1", category: "G1 Cat 2", value: 50, budgetid: "eece3355-921e" }, { group: "Group 1", category: "G1 Cat 3", budgetid: "1a593f25-28ee", value: 25 }, { group: "Group 1", category: "G1 Cat 3", budgetid: "1a593f25-28ee", value: 1 }, { group: "Group 2", category: "G2 Cat 1", value: 50, budgetid: "53780a3b-ad3a" }, { group: "Group 2", category: "G2 Cat 1", value: 5, budgetid: "53780a3b-ad3a" }, { group: "Group 2", category: "G2 Cat 2", value: 28, budgetid: "eece3355-921e" }];
Lo que quiero crear es un objeto que se vea así:
const newSet = { rows: [ { group: 'Group 1', categories: [ { category: 'G1 Cat 1', monthlyValues: [{'53780a3b-ad3a': 61}, {'eece3355-921e': 50}, {'1a593f25-28ee': 25}] }, { category: 'G1 Cat 2', monthlyValues: [{'53780a3b-ad3a': 5}, {'eece3355-921e': 50}, {'1a593f25-28ee': 26}] } ] }, { group: 'Group 2', categories: [ { category: 'G2 Cat 1', monthlyValues: [{'53780a3b-ad3a': 55}] }, { category: 'G2 Cat 2', monthlyValues: [{'eece3355-921e': 28}] }, ] } ] }Entonces, los datos se agrupan por grupos, luego cada grupo tiene categorías que son únicas y, finalmente, cada categoría tiene un valor total mensual que es la suma de los valores para el mismo presupuesto en cada grupo/categoría. Lo que también es importante es que la clave para los valores totales debe ser data.budgetid y estar en formato de cadena, ya que contiene guiones y números.