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,会更好