假设我们有两个对象数组arr1和arr2,现在需要比较它们并创建一个新的数组,其中只包含两个数组共同拥有的对象。
我们可以使用filter()和some()方法来实现此功能。具体步骤如下:
对于arr1中的每个对象,使用some()方法在arr2中查找是否存在具有相同属性的对象,如果存在,则保存该对象,否则忽略该对象。
对于arr2中的每个对象,使用some()方法在arr1中查找是否存在具有相同属性的对象,如果存在,则不操作该对象,否则将该对象添加到步骤1中保存的对象数组中。
最后返回步骤1和2中保存的对象数组。
以下是完整的代码示例:
const arr1 = [{id: 1, name: 'John'}, {id: 2, name: 'Jane'}, {id: 3, name: 'Bob'}]; const arr2 = [{id: 2, name: 'Jane'}, {id: 4, name: 'Mary'}, {id: 5, name: 'Tom'}];
const filteredArr = arr1.filter(obj1 => { return arr2.some(obj2 => { return obj1.id === obj2.id; }); }).concat(arr2.filter(obj2 => { return !arr1.some(obj1 => { return obj1.id === obj2.id; }); }));
console.log(filteredArr); // Output: [{id: 2, name: 'Jane'}]