如何从对象数组中过滤并提取符合条件的对象ID
简洁实现过滤数组并提取符合条件的ID列表
直接用 filter() + map() 的链式调用就能一步搞定,这是最直观优雅的写法:
const validIds = data.filter(item => item.canAcceptRecruits).map(item => item.id); console.log(validIds); // 输出 [1, 2, 50]
先通过 filter() 筛选出 canAcceptRecruits 为 true 的对象,紧接着用 map() 把每个符合条件的对象转换成对应的 id,直接得到目标ID数组。
如果想用 reduce() 实现,也能在一次遍历中完成过滤和提取(适合关注遍历次数的场景,小规模数组性能差异可忽略):
const validIds = data.reduce((acc, item) => { item.canAcceptRecruits && acc.push(item.id); return acc; }, []); console.log(validIds); // 输出 [1, 2, 50]
这里用 reduce() 的累加器作为结果数组,遍历每个元素时,若符合条件就把 id 推入累加器,最后返回这个数组即可。
两种写法里,filter()+map() 的可读性更强,日常开发更推荐;reduce() 则是另一种简洁的实现方式。
内容的提问来源于stack exchange,提问作者freercurse
相关产品推荐
相关产品推荐

