两个数组其中的元素都是对象,怎样过滤出具有相同属性但属性值不同的对象
时间: 2024-05-11 14:20:18 浏览: 88
实现多个数组的数据过滤
可以使用 `filter` 和 `some` 方法来实现:
```javascript
const arr1 = [{id: 1, name: 'Alice', age: 20}, {id: 2, name: 'Bob', age: 30}, {id: 3, name: 'Charlie', age: 25}];
const arr2 = [{id: 1, name: 'Alice', age: 22}, {id: 2, name: 'Bob', age: 30}, {id: 3, name: 'Charlie', age: 28}];
const result = arr1.filter(obj1 => {
const obj2 = arr2.find(obj2 => obj1.id === obj2.id); // 找到具有相同id的对象
return obj2 && Object.keys(obj1).some(key => obj1[key] !== obj2[key]); // 判断属性值是否不同
});
console.log(result); // 输出 [{id: 1, name: 'Alice', age: 20}, {id: 3, name: 'Charlie', age: 25}]
```
上述代码中,我们先使用 `filter` 方法过滤出 `arr1` 中具有相同id的对象,然后使用 `some` 方法判断这两个对象的属性值是否不同。如果不同,那么就返回 `true`,否则返回 `false`。最终返回的就是具有相同属性但属性值不同的对象。
阅读全文