只有两个数组对象A和B,AB两个数组对进行比较,如果唯一值ID相同就将这个对象放入arr1数组中,如果A有B没有就将这个对象放入arr2中,如果B有A没有就将这个对象放入arr3中 用ES6语法
时间: 2024-03-10 13:47:33 浏览: 55
浅谈ES6新增的数组方法和对象
可以使用ES6中的Map数据结构来实现这个需求,具体代码如下:
```javascript
const A = [{id: 1, name: 'Apple'}, {id: 2, name: 'Banana'}, {id: 3, name: 'Orange'}];
const B = [{id: 1, name: 'Apple'}, {id: 4, name: 'Grape'}, {id: 5, name: 'Peach'}];
const mapA = new Map(A.map(obj => [obj.id, obj]));
const mapB = new Map(B.map(obj => [obj.id, obj]));
const arr1 = [];
const arr2 = [];
const arr3 = [];
for (const [id, objA] of mapA) {
const objB = mapB.get(id);
if (objB) {
arr1.push({...objA, ...objB});
} else {
arr2.push(objA);
}
}
for (const [id, objB] of mapB) {
const objA = mapA.get(id);
if (!objA) {
arr3.push(objB);
}
}
console.log(arr1); // [{id: 1, name: 'Apple'}, ...]
console.log(arr2); // [{id: 2, name: 'Banana'}, {id: 3, name: 'Orange'}]
console.log(arr3); // [{id: 4, name: 'Grape'}, {id: 5, name: 'Peach'}]
```
首先将数组A和B转换成Map数据结构,其中以id为键,对象本身为值。然后遍历数组A中的每个对象,如果在Map B中存在相同id的对象,则将两个对象合并,放入arr1数组中;如果在Map B中不存在相同id的对象,则将该对象放入arr2数组中。接着遍历数组B中的每个对象,如果在Map A中不存在相同id的对象,则将该对象放入arr3数组中。最后输出arr1、arr2和arr3数组即可。
阅读全文