获取多个数组、对象交集

175 阅读1分钟
// 模拟数据
const data = [
    {
        id: [0, 1, 2, 4],
        name: ['a', 'b', 'c', 'e']
    },{
        id: [0, 1, 2, 3],
        name: ['a', 'b', 'c', 'd']
    },{
        id: [0, 2, 4],
        name: ['a', 'c', 'e']
    },
]

// 获得交集方法
function getSameData(data) {
    const baseData = data[0] // 以第一组数据为基准
    let sameId = baseData.id
    let sameData = [] // 最后返回的交集数据
    
    for(let i = 1; i < data.length; i++) {
        // 更新交集数据
        sameId = sameId.filter(item => data[i].id.includes(item))
    }
    
    baseData.id.map((item, index) => {
        for(let i = 0; i < sameId.length; i++) {
            if(item === sameId[i]) {
                sameData.push({
                    id: item,
                    name: baseData.name[index]
                })
            }
        }
    })

    return sameData
}

// 打印出交集数据
console.log(getSameData(data))