javaScript比较数据多的数组

文章介绍了如何通过使用JavaScript中的Map对象来优化两个大型数组的对比过程。作者提供了一个函数compare,它首先将较小数组的id映射到Map中,然后遍历较大数组,利用Map的快速查找特性,减少比较循环的次数,提高效率。
摘要由CSDN通过智能技术生成

假如也下两个数组进行比较。

var arr = [{ id: 1, name: 'zs', age: 19 }, { id: 2, name: 'zs', age: 19 }, { id: 3, name: 'zs', age: 19 }, { id: 4, name: 'zs', age: 19 }, { id: 5, name: 'zs', age: 19 }, { id: 6, name: 'zs', age: 19 }, { id: 7, name: 'zs', age: 19 }, { id: 8, name: 'zs', age: 19 }, { id: 9, name: 'zs', age: 19 }, { id: 10, name: 'zs', age: 19 }]

var arr22 = [{ id: 1, name: 'zs', age: 19 }, { id: 2, name: 'zs', age: 19 }, { id: 3, name: 'zs', age: 19 }, { id: 4, name: 'zs', age: 19 }, { id: 5, name: 'zs', age: 19 }, { id: 6, name: 'zs', age: 19 }, { id: 7, name: 'zs', age: 19 }, { id: 8, name: 'zs', age: 19 }, { id: 9, name: 'zs', age: 19 }, { id: 10, name: 'zs', age: 19 }, { id: 11, name: 'zs', age: 19 }, { id: 12, name: 'zs', age: 19 }, { id: 13, name: 'zs', age: 19 }, { id: 14, name: 'zs', age: 19 }, { id: 15, name: 'zs', age: 19 }, { id: 16, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }, { id: 1, name: 'zs', age: 19 }]

我的第一反应是,两个for循化,或者是map之类的。但是两个循化的次数就比较多了,可以进行优化。

function compare(arr1, arr2) {
        
    var map = new Map()
    //用map保存较小数组中id
    arr1.map((item) => map.set(item.id, 'yes'))
    
    //然后大的数据就只用循化一次了
    arr2.map((item) => {
        if (map.get(item.id)) {
            item.is = 'true'
        }
    })

    return arr2;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值