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

React中日期过滤Filter函数返回元素数量异常求助

问题原因及解决方案

核心问题:日期解析格式不匹配

你的交易数据中transactionDate的格式是'日 / 月 / 年'(比如'01 / 03 / 2023'代表2023年3月1日),但直接用new Date(singleTransaction.transactionDate)解析时,JavaScript会默认按照**美国日期格式(月/日/年)**处理,导致日期被错误转换:

  • '01 / 03 / 2023'被解析为2023年1月3日(而非预期的2023年3月1日),早于fromDate(2023年3月1日),被过滤
  • '01 / 04 / 2023'被解析为2023年1月4日,同样不在目标范围内
  • '02 / 04 / 2023'被解析为2023年2月4日,也不在范围内
  • 仅'03 / 04 / 2023'被解析为2023年3月4日,落在fromDate和toDate之间,所以仅保留这条数据

修复方案:手动解析交易日期

不要依赖new Date()的自动解析,按照日 / 月 / 年的格式手动拆分日期字符串,再创建正确的Date对象:

const comparison = data.filter((singleTransaction) => {
  // 拆分交易日期,去除空格分隔符
  const dateParts = singleTransaction.transactionDate.split(' / ');
  // 按年、月(需减1,因为Date的月份是0-11)、日的顺序构造Date对象
  const transactionDateObj = new Date(
    Number(dateParts[2]),
    Number(dateParts[1]) - 1,
    Number(dateParts[0])
  );
  return transactionDateObj.getTime() <= toDate && transactionDateObj.getTime() >= fromDate;
});

修复后,所有符合条件的4条数据都会被正确筛选出来:

  • '01 / 03 / 2023' → 2023年3月1日
  • '01 / 04 / 2023' → 2023年4月1日
  • '02 / 04 / 2023' → 2023年4月2日
  • '03 / 04 / 2023' → 2023年4月3日

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:47:39