我有一个包含多个属性的对象数组,看起来像这样:
[
{
"title" = "Test",
"prop1" = 4,
"prop2" = 6
},
{
"title" = "Test2",
"prop1" = 5,
"prop2" = 7
},
{
"title" = "Test",
"prop1" = 6,
"prop2" = 14
}
]
我想做的是...
所以最终我的输出将类似于...
我试图将值存储在变量中,比较这些变量,但这仅适用于两组数据,在我的情况下,也可能有五,十或十五组具有相同标题的数据。
任何帮助表示感谢,谢谢! :)
其他信息:我需要按名称访问属性,例如 data[1]['title']
答案 0 :(得分:1)
我们可以使用Array.prototype.reduce
来累积数组的已处理条目,通过处理,我的意思是通过使用title
来找到共享相同Array.prototype.findIndex
的元素,并对除title
:
const data = [
{
"title" : "Test",
"prop1" : 4,
"prop2" : 6
},
{
"title" : "Test2",
"prop1" : 5,
"prop2" : 7
},
{
"title" : "Test",
"prop1" : 6,
"prop2" : 14
}
];
const out = data.reduce((r, e) => {
let idx = r.findIndex(o => e.title === o.title);
if(idx >= 0 ){
r[idx].prop1 += e.prop1;
r[idx].prop2 += e.prop2;
}else{
r.push(e);
}
return r;
}, []);
console.log(out);