Javascript 对象数组中基于唯一键的分组

Javascript 对象数组中基于唯一键的分组,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我正在做一个小项目,我被困在这一点上。 我需要根据数组对象键进行分组 以下是阵列: let addOnFeatures = [ {"name": "feature1", id: 101, cost: 100}, {"name": "feature2", id: 102, cost: 200}, {"name": "feature1", id: 103, cost: 300}, {"name": "feature3", id: 104, cost: 40}

我正在做一个小项目,我被困在这一点上。 我需要根据数组对象键进行分组

以下是阵列:

   let addOnFeatures = [
    {"name": "feature1", id: 101, cost: 100},
    {"name": "feature2", id: 102, cost: 200},
    {"name": "feature1", id: 103, cost: 300},
    {"name": "feature3", id: 104, cost: 40}
    ]
我需要根据名称键进行分组,这样每个与公共名称相关的id都应该显示在自己的选项卡上

预期的输出应该是

*uniqueFeaturename
id: cost
例如:

 1. feature1
   101 : 100
   103 : 300
 2. feature2
    102 : 200
 3. feature3
    104: 40

只需使用
Array.prototype.reduce
并向对象添加元素即可

let addOnFeatures=[
{“名称”:“功能1”,id:101,成本:100},
{“名称”:“功能2”,id:102,成本:200},
{“名称”:“功能1”,id:103,成本:300},
{“名称”:“功能3”,id:104,成本:40}
]
const res=addOnFeatures.reduce((附件,项目)=>{
如果(附件[项目名称]){
acc[item.name]={…acc[item.name],[item.id]:item.cost};
}否则{
acc[item.name]={[item.id]:item.cost};
}
返回acc;
}, {});

控制台日志(res)一种解决方案可以是:

let addOnFeatures=[
{“名称”:“功能1”,id:101,成本:100},
{“名称”:“功能2”,id:102,成本:200},
{“名称”:“功能1”,id:103,成本:300},
{“名称”:“功能3”,id:104,成本:40}
];
var res={};
addOnFeatures.forEach(i=>{
如果(!res[i.name]){
res[i.name]=[{id:i.id,cost:i.cost}]
}否则{
res[i.name].push({id:i.id,cost:i.cost})
}
}
);

console.log(res)
请用您尝试过的代码以有效的JSON格式发布预期的输出。现在还不清楚我!我刚刚编辑了你的问题,这样文本就不再是代码格式的块了。第二条评论:到目前为止你都做了些什么?请公开一些代码,或者至少公开您想要实现的算法。这一个应该可以工作,但是使用一个reducer,而不是用forEach来改变var,会更好