合并数组,但如果找到"name"则合并/添加数据



我试图在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});
}
}

相关内容

最新更新