使用Lodash按条件过滤对象数组未获预期结果求助
解决Lodash按条件筛选数组的问题
我来帮你搞定这个Lodash过滤的问题!你需要跳过满足EarnCode < 90 && Hours === 0的数据,本质上就是要保留所有不满足这个组合条件的项,用_.filter实现的话,只需要把跳过的条件取反就行。
核心思路
_.filter方法会保留所有传入条件返回true的项,所以我们的筛选逻辑应该是:只要数据项不满足EarnCode < 90且Hours === 0,就保留它。根据逻辑运算的德摩根定律,这个条件可以等价转换为:EarnCode >= 90 || Hours !== 0,这样写会更直观易读。
代码示例
假设你的原始数据是这样的:
const data = [ { EarnCode: 85, Hours: 0 }, // 会被跳过 { EarnCode: 95, Hours: 0 }, // 保留 { EarnCode: 80, Hours: 5 }, // 保留 { EarnCode: 88, Hours: 0 }, // 会被跳过 { EarnCode: 90, Hours: 0 }, // 保留(EarnCode不小于90) { EarnCode: 75, Hours: 2 } // 保留(Hours不为0) ];
你可以用两种方式实现过滤:
- 直接对跳过条件取反
const filteredData = _.filter(data, item => !(item.EarnCode < 90 && item.Hours === 0));
- 转换为更直观的逻辑表达式(推荐)
const filteredData = _.filter(data, item => item.EarnCode >= 90 || item.Hours !== 0);
验证结果
上面的代码运行后,filteredData会包含以下项:
[ { EarnCode: 95, Hours: 0 }, { EarnCode: 80, Hours: 5 }, { EarnCode: 90, Hours: 0 }, { EarnCode: 75, Hours: 2 } ]
完全符合你“跳过指定条件数据”的需求。
内容的提问来源于stack exchange,提问作者Muthukumar Marichamy
相关产品推荐
相关产品推荐

