我有两个数组
var array1 = [{firstName:'John', age:32, email:'xyz1@email.com'}, {firstName:'Jack', age:40, email:'xyz2@email.com'}];
var array2 = [{firstName:'Jen', age:29, email:'abc1@email.com'}, {firstName:'Jack', age:40, email:'xyz2@email.com'}];
我想合并两个数组并获得以下输出
var array3 = [{firstName:'John', age:32, email:'xyz1@email.com'}, {firstName:'Jack', age:40, email:'xyz2@email.com'}, {firstName: 'Jen', age: 29, email: 'abc1@email.com'}];
是否想知道在JavaScript中合并两个数组的最佳方法,以便仅从每个数组中获取唯一项?
答案 0 :(得分:0)
您可以使用Rest运算符,Set Object和JSON方法执行此操作:
[ ...new Set([...a1, ...a2].map(JSON.stringify)) ].map(JSON.parse);
var array1 = [{firstName:'John', age:32, email:'xyz1@email.com'}, {firstName:'Jack', age:40, email:'xyz2@email.com'}];
var array2 = [{firstName:'Jen', age:29, email:'abc1@email.com'}, {firstName:'Jack', age:40, email:'xyz2@email.com'}];
function joinArrays(a1, a2) {
return [ ...new Set([...a1, ...a2].map(JSON.stringify)) ].map(JSON.parse);
}
console.log(joinArrays(array1, array2));
您可以使用Rest运算符组合数组:
[...a1, ...a2]
使用JSON.stringify
将对象转换为字符串:
[...a1, ...a2].map(JSON.stringify)
您将这些字符串放入Set
中。集合不允许重复的原始值(字符串,数字等)
new Set([...a1, ...a2].map(JSON.stringify))
您使用Rest运算符将Set
放入Array
[...new Set([...a1, ...a2].map(JSON.stringify))]
您可以使用JSON.parse
映射数组,以将字符串转换为对象,减去重复项。
[ ...new Set([...a1, ...a2].map(JSON.stringify)) ].map(JSON.parse);