Javascript Vanilla JS中对象数组的多级组

Javascript Vanilla JS中对象数组的多级组,javascript,Javascript,所以我有一系列的对象,我正在尝试将它们组合在一起,我对JS还是有点陌生,随着我越来越多的练习,我变得越来越好,但还不是很好,无论如何,我正在尝试找出如何在多个层次上进行组合。例如,如果我有一组主题公园,我想按州和城市进行分组。我可以按州分组,也可以按城市分组,但我对按州分组和按城市分组有点迷茫 let parks=[{ id:546, 名称:“卡拉哈里度假村”, 城市:“威斯康星三角洲”, 州:“威斯康星州”, 国家:“美国” }, { 身份证号码:547, 名字:“小阿梅里卡”, 城市:“马

所以我有一系列的对象,我正在尝试将它们组合在一起,我对JS还是有点陌生,随着我越来越多的练习,我变得越来越好,但还不是很好,无论如何,我正在尝试找出如何在多个层次上进行组合。例如,如果我有一组主题公园,我想按州和城市进行分组。我可以按州分组,也可以按城市分组,但我对按州分组和按城市分组有点迷茫

let parks=[{
id:546,
名称:“卡拉哈里度假村”,
城市:“威斯康星三角洲”,
州:“威斯康星州”,
国家:“美国”
},
{
身份证号码:547,
名字:“小阿梅里卡”,
城市:“马歇尔”,
州:“威斯康星州”,
国家:“美国”
},
{
id:2,
名称:“卡拉威公园”,
城市:“卡尔加里”,
州:“阿尔伯塔省”,
国家:“加拿大”
}
];
函数groupBy(objectArray,属性){
返回objectArray.reduce((acc,obj)=>{
const key=obj[属性];
如果(!acc[键]){
acc[键]=[];
}
acc[键]。推送(obj);
返回acc;
}, {});
}
let group=groupBy(公园,'州');

控制台日志(组)您可以在此处重复使用您的
groupBy
功能:

let group = groupBy(parks, 'state');
Object.keys(group).forEach(stateKey => {
  group[stateKey] = groupBy(group[stateKey], 'city');

  // For further grouping, just make sure you pass in an array
  // as the first argument to groupBy. 
  Object.keys(group[stateKey]).forEach(cityKey => {
    group[stateKey][cityKey] = groupBy(group[stateKey][cityKey], 'county');
  });
});

所以,如果我有一个数组的对象,我想进一步组,我会如何链到这个?我第二次尝试重复上面的内容,但没有成功。更新了我的答案以包含第二级分组