📅  最后修改于: 2023-12-03 14:55:32.506000             🧑  作者: Mango
在 JavaScript 中,我们可以使用 filter()
和 includes()
方法来查找两个对象数组之间的交集。具体实现步骤如下:
let a = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Charlie'}];
let b = [{id: 2, name: 'Bob'}, {id: 4, name: 'David'}];
filter()
方法过滤出在 b 中存在的元素:let intersection = a.filter((element) => b.map((e) => e.id).includes(element.id));
这段代码中,我们使用了 filter()
方法来遍历 a 数组,然后在每个元素中使用 includes()
方法来寻找 b 数组中是否存在这个元素。由于 includes()
方法只能在数组中查找基本类型的值,而不能在对象数组中查找对象,所以我们使用了 map()
方法来从 b 数组中提取 id 属性组成的数组,以便能够使用 includes()
方法查找。
console.log(intersection);
// Output: [{id: 2, name: 'Bob'}]
完整代码如下:
let a = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Charlie'}];
let b = [{id: 2, name: 'Bob'}, {id: 4, name: 'David'}];
let intersection = a.filter((element) => b.map((e) => e.id).includes(element.id));
console.log(intersection);
// Output: [{id: 2, name: 'Bob'}]
这就是使用 JavaScript 查找两个对象数组之间的交集的方法。