我试图在javascript中添加数据(如果存在(时组合2个数组。我无法让它工作。我正在尝试做的是添加这个数组:
[
{
"name":"name1",
"points":{
"intern":57,
"extern":0,
"total":57
}
},
{
"name":"name2",
"points":{
"intern":26,
"extern":0,
"total":26
}
}
]
有了这个:
[
{
"name":"name1",
"points":{
"intern":31,
"extern":0,
"total":31
}
}
]
但是,如果"name1"已经在第一个数组中,我想添加实习点和外部点,所以它看起来像这样:
[
{
"name":"name1",
"points":{
"intern":88,
"extern":0,
"total":88
}
},
{
"name":"name2",
"points":{
"intern":26,
"extern":0,
"total":26
}
}
]
我如何在 JavaScript 中做到这一点? 感谢您的帮助!
使用名称哈希表查找重复:
const hash = {}, result = [];
for(const { name, points: {intern, extern, total}} of array1.concat(array2)) {
if(hash[name]) {
hash[name].intern += intern;
hash[name].extern += extern;
hash[name].total += total;
} else {
result.push(hash[name] = {name, intern, extern, total});
}
}