Javascript 按相同的属性值对数组进行分组,迭代该数组

Javascript 按相同的属性值对数组进行分组,迭代该数组,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我有以下数组: var results = [ { group: 1, department: 2, total: 10 }, { group: 1, department: 2, total: 25 }, { group: 1, department: 3, total: 15 }, { group: 1, department: 3, total: 5 }, { group: 2, departme

我有以下数组:

var results = [
  { group: 1,
    department: 2,
    total: 10 },
  { group: 1,
    department: 2,
    total: 25 },
  { group: 1,
    department: 3, 
    total: 15 },
  { group: 1,
    department: 3,
    total: 5 },
  { group: 2,
    department: 4,
    total: 10},
  { group: 2,
    department: 4, 
    total: 50 }
]
我需要将数组排列成二维嵌套数组,其中子数组是组1和组2。子数组也应该是父数组,其子数组按部门排序,如下所示:

var results:[  
   {  
      group1:[  
         {  
            department2:[  
               {  
                  group:1,
                  department:2,
                  total:10
               },
               {  
                  group:1,
                  department:2,
                  total:25
               },
               {  
                  group:1,
                  department:3,
                  total:15
               }
            ]
         },
         {  
            department3:[  
               {  
                  group:1,
                  department:3,
                  total:5
               }
            ]
         }
      ]
   },
   {  
      group2:[  
         {  
            department4:[  
               {  
                  group:2,
                  department:4,
                  total:10
               },
               {  
                  group:2,
                  department:4,
                  total:50
               }
            ]
         }
      ]
   }
]
这是针对react组件的,我需要将每个组件打印为一行,但在完成所有部门组后添加一个总计,然后在每个组后添加一个总计,然后在所有操作后添加一个总计

也许我把事情复杂化了,还有更好的办法吗?

var结果=[
{集团:1,
部门:2,,
总数:10},
{集团:1,
部门:2,,
总数:25},
{集团:1,
部门:3,,
总数:15},
{集团:1,
部门:3,,
总数:5},
{集团:2,
部门:4,,
总数:10},
{集团:2,
部门:4,,
总数:50}
]
var嵌套_结果={}
results.forEach(obj=>{
if(嵌套结果[obj.group]==未定义){
嵌套的_结果[obj.group]={};
}
if(嵌套的_结果[对象组][对象部门]==未定义){
嵌套_结果[对象组][对象部门]=[];
}
嵌套结果[obj.group][obj.department].push(obj);
})
console.log(嵌套的_结果)
var结果=[
{组:1,部门:2,总数:10},
{组:1,部门:2,总数:25},
{组:1,部门:3,总数:15},
{组:1,部门:3,总数:5},
{小组:2人,部门:4人,总数:10人},
{小组:2个,部门:4个,总数:50}
]
var outObj={};
var out=results.map(函数(a){
var groupName='group'+a.group;
outObj[groupName]=='undefined'&&(outObj[groupName]={})的类型;
var depName=‘部门’+a.部门;
outObj[groupName][depName]=“未定义”和&(outObj[groupName][depName]=[])的类型;
outObj[groupName][depName].push(a);
});

控制台日志(outObj)预期的API输入无效,因此可以改用对象。迭代数组并将数据放入其中,其中group#是键,department和total作为值存储在数组中。您当前所需的结构是多余的。完美!!谢谢你的帮助,我被这个问题弄得头晕目眩,无法解决它!