数组对象去重后再拼接

数组对象去重后再拼接
// 示例数据
const arr1 = [{ id: 1, name: 'Alice', age: 25 },{ id: 2, name: 'Bob', age: 30 }
];const arr2 = [{ id: 2, name: 'Bob', age: 30 }, // 重复{ id: 3, name: 'Charlie', age: 35 }
];// 方法1:使用 Map(推荐,性能好)
function mergeAndDedupe(arr1, arr2, key = 'id') {const map = new Map();[...arr1, ...arr2].forEach(item => {map.set(item[key], item);});return Array.from(map.values());
}const result1 = mergeAndDedupe(arr1, arr2);
console.log(result1);
// 输出: [{ id: 1, name: 'Alice'... }, { id: 2, name: 'Bob'... }, { id: 3, name: 'Charlie'... }]// 方法2:使用 filter + indexOf (基于字符串化)
const merged = [...arr1, ...arr2];
const result2 = merged.filter((item, index) => index === merged.findIndex(obj => obj.id === item.id)
);// 方法3:使用 reduce
const result3 = [...arr1, ...arr2].reduce((acc, current) => {const exists = acc.find(item => item.id === current.id);if (!exists) acc.push(current);return acc;
}, []);