如何过滤对象数组并提取与另一ID数组匹配的name属性值
需求实现方案
你可以通过数组原生方法组合实现需求,两种常用实现方式如下:
1. 基础实现(适合小数据量)
直接用filter()筛选符合条件的对象,再用map()提取name属性即可:
const result = arrayOne .filter(item => arrayTwo.includes(item.id)) .map(item => item.name)
2. 性能优化版(适合大数据量)
如果arrayTwo元素很多,先将其转为Set结构,可以把id查找的时间复杂度从O(n)降低到O(1),运行效率更高:
const validIdSet = new Set(arrayTwo) const result = arrayOne .filter(item => validIdSet.has(item.id)) .map(item => item.name)
两种方法最终输出的result都符合预期:
["fruit", "water"]
内容的提问来源于stack exchange,提问作者Deepa
相关产品推荐
相关产品推荐

