js中两个数组对象比较相同的单独提出来不相同的单独提出来
时间: 2024-02-26 13:58:14 浏览: 92
在 JavaScript 中,比较两个数组对象并将它们的相同元素和不同元素分别提取出来的方法如下:
```javascript
const arr1 = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Bob' }];
const arr2 = [{ id: 1, name: 'John' }, { id: 2, name: 'Doe' }, { id: 4, name: 'Alice' }];
// 相同元素
const same = arr1.filter(obj1 => arr2.some(obj2 => obj1.id === obj2.id && obj1.name === obj2.name));
// 不同元素
const different = arr1.filter(obj1 => !same.some(obj2 => obj1.id === obj2.id && obj1.name === obj2.name))
.concat(arr2.filter(obj2 => !same.some(obj1 => obj1.id === obj2.id && obj1.name === obj2.name)));
console.log('相同元素:', same);
console.log('不同元素:', different);
```
输出结果:
```
相同元素: [ { id: 1, name: 'John' } ]
不同元素: [ { id: 2, name: 'Jane' }, { id: 3, name: 'Bob' }, { id: 2, name: 'Doe' }, { id: 4, name: 'Alice' } ]
```
说明:
1. 使用数组的 filter() 方法过滤出相同元素和不同元素。
2. 相同元素的判断条件是两个对象的 id 和 name 属性相等。
3. 不同元素的判断条件是在相同元素中不存在的对象。
阅读全文