You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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)
];

你可以用两种方式实现过滤:

  1. 直接对跳过条件取反
const filteredData = _.filter(data, item => !(item.EarnCode < 90 && item.Hours === 0));
  1. 转换为更直观的逻辑表达式(推荐)
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:39:49