JavaScript中如何从对象数组筛选出指定ID集合的新数组?
筛选ID匹配的数组对象
基础实现
直接利用数组的filter方法结合includes判断,写法简洁直观:
const availAbleData = [{id:1,name:'user1'},{id:2,name:'user2'},{id:3,name:'user3'},{id:4,name:'user5'},{id:5,name:'user5'},{id:6,name:'user6'}]; const selectedIds=[1,2,3,4]; // 筛选id在selectedIds中的对象 const filteredData = availAbleData.filter(item => selectedIds.includes(item.id)); console.log(filteredData); // 输出结果: // [{id:1,name:'user1'},{id:2,name:'user2'},{id:3,name:'user3'},{id:4,name:'user5'}]
性能优化方案
如果selectedIds数组元素较多,推荐先把它转换成Set——因为Set的has方法查找时间复杂度是O(1),比数组includes的O(n)效率更高:
const availAbleData = [{id:1,name:'user1'},{id:2,name:'user2'},{id:3,name:'user3'},{id:4,name:'user5'},{id:5,name:'user5'},{id:6,name:'user6'}]; const selectedIds=[1,2,3,4]; // 转换为Set提升查找性能 const idSet = new Set(selectedIds); const filteredData = availAbleData.filter(item => idSet.has(item.id)); console.log(filteredData); // 输出结果与基础实现一致
内容的提问来源于stack exchange,提问作者sourabhk
相关产品推荐
相关产品推荐

