javascript 多个数组求交集

 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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值