假设有两个对象数组arr1和arr2。arr2包含arr1中不存在的对象。我们需要比较这两个数组并将arr2中的元素映射到arr1中,创建一个新的合并数组。以下是解决方案:
// 例1:比较和映射具有唯一ID属性的对象数组
const arr1 = [{ id: 1, name: 'Tom' }, { id: 2, name: 'Jerry' }];
const arr2 = [{ id: 2, name: 'Jerry' }, { id: 3, name: 'Spike' }];
function compareAndMap(arr1, arr2) {
return arr1.concat(arr2.filter(item2 => !arr1.find(item1 => item1.id === item2.id)));
}
const arrCombined = compareAndMap(arr1, arr2);
console.log(arrCombined);
//Output: [{ id: 1, name: 'Tom' }, { id: 2, name: 'Jerry' }, { id: 3, name: 'Spike' }]
该示例将arr1和arr2中具有相同id的对象合并在一起,并返回合并数组。
// 例2:比较和映射没有唯一ID属性的对象数组
const arr1 = [{ name: 'Tom', age: 5 }, { name: 'Jerry', age: 6 }];
const arr2 = [{ name: 'Jerry', age: 7 }, { name: 'Spike', age: 8 }];
function compareAndMap(arr1, arr2) {
return arr1.concat(arr2.filter(item2 => !arr1.find(item1 => {
return item1.name === item2.name && item1.age === item2.age;
})));
}
const arrCombined = compareAndMap(arr1, arr2);
console.log(arrCombined);
//Output: [{ name: 'Tom', age: 5 }, { name: 'Jerry', age: 6 }, { name: 'Spike', age: 8 }]
在例2中,由于对象没有唯一的ID属性,我们通过比较对象中的所有属性来检查对象是否相同。返回合并数组。