Ответ
Это можно сделать с помощью операторов покоя, объекта Set и методов 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));
Объяснение:
Вы комбинируете массивы, используя операторы покоя:
[...a1, ...a2]
Вы превращаете объекты в строки с помощью JSON.stringify
:
[...a1, ...a2].map(JSON.stringify)
Вы помещаете эти строки в Set
. Наборы не допускают дублирования Примитивных Значений ( строки, числа и т. Д. c)
new Set([...a1, ...a2].map(JSON.stringify))
Вы используете Оператор покоя, чтобы поместить Set
в Array
[...new Set([...a1, ...a2].map(JSON.stringify))]
Вы отображаете массив, используя JSON.parse
, чтобы превратить строки обратно в объекты, за исключением дубликатов.
[ ...new Set([...a1, ...a2].map(JSON.stringify)) ].map(JSON.parse);