如何根据纯id数组从对象数组中筛选匹配元素生成新对象数组
代码实现
首先修正原id数组的格式错误:原数组最后一个元素混用了单双引号,需要统一为双引号才能正常运行。
// 修正后的id数组 const targetIds = ["111","114","117"]; // 待匹配的源对象数组 const sourceData = [ { id: "111", Name: "Jerry" }, { id: "112", Name: "Tom" }, { id: "113", Name: "Mouse" }, { id: "114", Name: "Minny" }, { id: "115", Name: "Mayavi" }, { id: "116", Name: "Kuttoosan" }, { id: "117", Name: "Raju" } ];
小数据量场景实现
如果源数组和id数组长度都不大,直接用filter+includes组合即可:
const filteredResult = sourceData.filter(item => targetIds.includes(item.id));
大数据量场景优化实现
如果数据量超过千级,建议先把id数组转为Set实例,把查询时间复杂度从O(n)降到O(1),提升运行效率:
const idSet = new Set(targetIds); const filteredResult = sourceData.filter(item => idSet.has(item.id));
运行后得到的filteredResult就是要求的输出结果:
[ { id: "111", Name: "Jerry" }, { id: "114", Name: "Minny" }, { id: "117", Name: "Raju" } ]
内容的提问来源于stack exchange,提问作者Ansari Hi
相关产品推荐
相关产品推荐

