JavaScript判断数组对象是否存在于另一数组并修改对应属性值
实现方案
JavaScript 原生方法实现
推荐先将arrayB的id提取为Set实现O(1)复杂度的查询,整体时间复杂度为O(n+m),适合各类数据量场景:
// 提取arrayB所有id到Set const bIdSet = new Set(arrayB.map(item => item.id)) // 直接修改原arrayA arrayA.forEach(item => { item.check = bIdSet.has(item.id) }) // 如果需要生成新数组不改动原数组,用以下写法 // const newArrayA = arrayA.map(item => ({ // ...item, // check: bIdSet.has(item.id) // }))
Lodash 实现
同样可以先做id索引再批量修改:
// 以id为键生成arrayB的索引映射 const bIdMap = _.keyBy(arrayB, 'id') // 直接修改原arrayA _.forEach(arrayA, item => { item.check = !!bIdMap[item.id] }) // 生成新数组的写法 // const newArrayA = _.map(arrayA, item => ({ // ...item, // check: !!bIdMap[item.id] // }))
内容的提问来源于stack exchange,提问作者GKim121
相关产品推荐
相关产品推荐

