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

JavaScript如何筛选对象数组中小于等于当前日期的条目

问题原因及修复方案
  • 代码存在两个核心问题:
    1. 直接将字符串格式的event_date和Date实例做比较,JS不会自动将日期字符串转为时间维度的可比较值,需要先把event_date转为Date对象再判断
    2. 示例数组的第二个对象末尾缺少逗号,会触发语法错误,需要先补全语法
修正后代码
const arr = [{
    "id": "e18dae03-99c7-4ffa-be2f-a595fc7fad15",
    "event_date": "2021-09-30T01:00:00.000Z",
    "alert_name": null,
    "alert_level": null,
    "alert_action": null,
    "alert_details": null,
},
{
    "id": "e18dae03-99c7-4ffa-be2f-a595fc7fad15",
    "event_date": "2021-10-30T01:00:00.000Z",
    "alert_name": null,
    "alert_level": null,
    "alert_action": null,
    "alert_details": null,
}, // 补全缺失的逗号
{
    "id": "765a508f-fb47-4de4-bf69-19f0db38ccfc",
    "event_date": "2021-09-17T22:03:00.000Z",
    "alert_name": null,
    "alert_level": null,
    "alert_action": null,
    "alert_details": null,
},
{
    "id": "bc07a114-43f4-49a1-bb6c-fec801aee749",
    "longitude": null,
    "event_date": "2021-11-19T07:51:00.000Z",
    "alert_name": null,
    "alert_level": null,
    "alert_action": null,
    "alert_details": null,
}
]

const filterByExpiration = () => arr.filter(({ event_date }) => new Date(event_date) <= new Date());

如果需要规避时区误差,也可以统一转成时间戳比较,写法为new Date(event_date).getTime() <= Date.now(),效果完全一致。

内容的提问来源于stack exchange,提问作者prashant padadune

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:54:03