我需要比较两个对象数组并删除重复项并将它们合并为一个。 我对 javascript/Typescript 有点陌生。我读过一些使用 Map、reduce、filter 来完成这项工作的博客。 这是正确的方法吗?
但是,我想知道是否可以创建它的 map 以及 Map.ContainsKey 或 Map.getvalues();
在实际问题中,对象非常庞大,有多个键,甚至数组有数百条记录。
[
{
Name: Roger
Country : spain
},
{
Name:Tiger
Counry : USA
},
{
Name: Micheal
Country: USA
},
]
[
{
Name: sachin
Country : India
},
{
Name:Roger
Counry : Spain
},
]
output
[
{
Name: Roger
Country : spain
},
{
Name:Tiger
Counry : USA
},
{
Name: Micheal
Country: USA
},
{
Name: sachin
Country : India
}
]
最佳答案
您可以将所需值的哈希表作为键,并推送哈希表中没有标志的元素。
var array1 = [{ Name: 'Roger', Country: 'Spain' }, { Name: 'Tiger', Counry: 'USA' }, { Name: 'Micheal', Country: 'USA' }],
array2 = [{ Name: 'sachin', Country: 'India' }, { Name: 'Roger', Country: 'Spain' }],
hash = Object.create(null),
result = [array1, array2].reduce(function (r, a) {
a.forEach(function (o) {
var key = ['Name', 'Country'].map(k => o[k]).join('|');
if (!hash[key]) {
r.push(o);
hash[key] = true;
}
});
return r;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 如何在删除重复项的同时合并对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48691800/