能否用一行代码实现两个JavaScript filter过滤功能?
将两个Filter函数合并为一行的实现方法
当然能把两个连续的filter合并成一行,关键就是把两个过滤条件用逻辑运算符(比如&&表示同时满足,||表示满足其一就行)组合起来,放到同一个filter的回调函数里。
举个实际例子:
假设你原来的代码是这样的:
// 先过滤出成年用户 const adultUsers = users.filter(user => user.age >= 18); // 再从成年用户里过滤出活跃用户 const activeAdultUsers = adultUsers.filter(user => user.isActive);
合并后直接写成一行:
const activeAdultUsers = users.filter(user => user.age >= 18 && user.isActive);
要是你的两个条件是“满足任意一个就行”,就换||:
const targetUsers = users.filter(user => user.isAdmin || user.isVip);
这么改不仅代码更简洁,还能提升效率——原来的写法要遍历两次数组,合并后只需要遍历一次,逻辑和原来完全一致。
内容的提问来源于stack exchange,提问作者MinolaT
相关产品推荐
相关产品推荐

