js 多数组对象取交集
时间: 2023-10-10 18:08:03 浏览: 49
可以使用 JavaScript 的 `filter` 方法和 `includes` 方法来实现数组对象的交集。
比如说,假设我们有两个数组对象 `arr1` 和 `arr2`,每个数组对象都包含一个属性 `id`,我们要找出两个数组对象中 `id` 相同的元素,可以使用以下代码:
```javascript
const arr1 = [{id: 1, name: 'A'}, {id: 2, name: 'B'}, {id: 3, name: 'C'}];
const arr2 = [{id: 2, value: 'X'}, {id: 3, value: 'Y'}, {id: 4, value: 'Z'}];
const intersect = arr1.filter(item1 => arr2.some(item2 => item2.id === item1.id));
console.log(intersect); // [{id: 2, name: 'B'}, {id: 3, name: 'C'}]
```
这里使用了 `filter` 方法筛选出 `arr1` 中的元素,然后使用 `some` 方法在 `arr2` 中查找是否有与当前元素 `id` 相同的元素。如果有,则说明两个数组对象中都存在这个元素,将其添加到结果数组 `intersect` 中。最后返回 `intersect` 数组即可。
注意:这种方法是基于引用比较的,也就是说,只有当两个数组对象中的元素引用相同时才认为它们是相同的元素。如果两个数组对象中的元素虽然 `id` 相同但引用不同,也不会被视为交集元素。