如何筛选出仅包含第一个数组中ID的产品数组?
问题解决:筛选出ID匹配的产品数组
错误原因
你写的es.id.includes(first)会报错,因为es.id是数字类型,数字本身没有includes()方法——这个方法只有数组和字符串能调用。
正确代码
把判断逻辑反过来,用第一个数组的includes()方法检查当前产品的ID是否在其中:
let first = [1, 4] let second = [{id: 1}, {id: 2}, {id: 4}] const filteredProducts = second.filter(item => first.includes(item.id)) console.log(filteredProducts) // 输出: [{id: 1}, {id: 4}]
性能优化(可选)
如果first数组元素很多,推荐先转成Set,这样查找效率会更高(时间复杂度从O(n*m)降到O(n)):
let first = [1, 4] let idSet = new Set(first) let second = [{id: 1}, {id: 2}, {id: 4}] const filteredProducts = second.filter(item => idSet.has(item.id))
内容的提问来源于stack exchange,提问作者shiroSn
相关产品推荐
相关产品推荐

