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

JavaScript数组过滤:如何实现带日期例外条件的元素筛选?

修正筛选逻辑

现有代码

payload: data.filter((item) => !isNullOrUndefined(item?.process_detail)
    && !isEqual(item?.process_detail?.status, EVENT_STATE_KEYS.doesNotApply)),
});
   
});

需求说明

仅当元素的start_date已过期时,才过滤掉process_detail为null或undefined的项;若为未来进程,即使process_detail为空也需保留。但现有代码会错误过滤掉这类未来进程。

数据格式示例:

{
"id": 459,
"name": "Future process test",
"date": "2022-11-22T00:00:00.000Z",
"type": "PotentialProcess",
"min_worked_days": 0,
"reminder_days": 0,
"start_date": "2022-10-22T00:00:00.000Z",
"process_detail": null,
"follow_up_process_id": null,
"audience_id": 81,
}

修正后的代码

payload: data.filter((item) => {
  // 判断进程是否已过期
  const isProcessExpired = new Date(item.start_date) < new Date();
  // 核心筛选逻辑
  return !isEqual(item?.process_detail?.status, EVENT_STATE_KEYS.doesNotApply) 
    && (!isProcessExpired || !isNullOrUndefined(item?.process_detail));
}),
});

逻辑解释

  • 统一过滤掉process_detail状态为EVENT_STATE_KEYS.doesNotApply的项(无论进程是否过期)
  • 未过期进程:只要状态不符合doesNotApply,无论process_detail是否为空都保留
  • 已过期进程:必须同时满足process_detail不为空、状态不符合doesNotApply才保留

内容的提问来源于stack exchange,提问作者Lautaro Graciani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:48:31