// 示例数据 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; }, []);
