如何在JavaScript中合并两个数组并删除重复项?

时间:2020-02-18 21:24:32

标签: javascript arrays concat

我有两个数组

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中合并两个数组的最佳方法,以便仅从每个数组中获取唯一项?

1 个答案:

答案 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);
相关问题