如何查找ID数组中不在对象数组id字段内的缺失ID值
实现方案
最优方案(时间复杂度O(n+m))
先提取users的id存为Set,再过滤ID数组,这个方案在数据量较大时性能优势明显,Set的查找效率为O(1),远高于数组遍历:
// 提取users中所有已存在的id存入Set const existingIds = new Set(users.map(user => user.id)) // 过滤出ID数组中不在Set内的值,即为缺失ID const missingIds = ID.filter(id => !existingIds.has(id)) console.log(missingIds) // 输出 [5]
精简写法(适合小数据量)
如果数据量很小,不想单独声明Set,可以用Array.some直接判断,写法更简洁,但时间复杂度为O(n*m),数据量大时性能不如Set方案:
const missingIds = ID.filter(id => !users.some(user => user.id === id))
原代码问题说明
你之前写的嵌套循环逻辑写反了:遍历的是users数组,检查每个用户的id是否在ID数组中,得到的是「users中不在ID列表的用户」,和你需要的「ID列表中不存在于users里的id」需求刚好相反。
内容的提问来源于stack exchange,提问作者ozansozuoz
相关产品推荐
相关产品推荐

