1. 如果是多个对象数组
function findIntersectionById(...arrays) {
// 使用第一个数组作为初始累积值
return arrays.reduce((acc, currentArray) => {
const currentIds = new Set(currentArray.map((item) => item.id));
return acc.filter((item) => currentIds.has(item.id));
}, arrays[0] || []); // 确保初始值为第一个数组或空数组
},
运行结果:
let arr = [
[{id:1},{id:2},{id:3}],
[{id:2}],
[{id:2},{id:3},{id:4}],
]
findIntersectionById(...arr) // [{id: 2}]
2. 如果是多个数字数组
function findIntersection(...arrays) {
// 使用第一个数组作为初始累积值
return arrays.reduce((acc, currentArray) => {
const currentIds = new Set(currentArray);
return acc.filter((item) => currentIds.has(item));
}, arrays[0] || []); // 确保初始值为第一个数组或空数组
}
运行结果:
let arr = [
[1,2,3],
[2],
[2,3,4,5],
]
findIntersection(...arr) // [2]