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

JavaScript日期比较:筛选大于指定日期元素返回空数组,求排查错误

解决JavaScript筛选大于指定日期元素返回空数组的问题

我来帮你排查下问题所在——你的filter函数返回空数组主要是两个小细节没注意到:

  • 箭头函数缺少显式返回值:当箭头函数使用大括号{}包裹代码块时,必须手动写return来返回结果,否则函数默认返回undefined。而filter只会保留返回值为true的元素,所有元素都被过滤掉,自然得到空数组。
  • 不必要的重复创建日期对象:你在filter的每次循环里都重新生成基准日期element,虽然这不会直接导致错误,但会造成不必要的性能开销,建议把它提到循环外面。

修正后的代码

var arr = ["2018-01-24T17:43:03.000Z","2018-01-25T17:43:03.000Z","2018-01-26T17:43:03.000Z","2018-01-27T17:43:03.000Z"]
// 将基准日期提取到filter外部,避免重复实例化
var targetDate = new Date("2018-01-23T00:00:00.000Z");
var biggerThanElements = arr.filter(x => {
  const currentDate = new Date(x);
  // 显式返回比较结果
  return currentDate > targetDate;
});
console.log(biggerThanElements);

更简洁的写法

如果不需要额外的变量,可以去掉大括号,箭头函数会自动返回表达式的结果:

var arr = ["2018-01-24T17:43:03.000Z","2018-01-25T17:43:03.000Z","2018-01-26T17:43:03.000Z","2018-01-27T17:43:03.000Z"]
var targetDate = new Date("2018-01-23T00:00:00.000Z");
var biggerThanElements = arr.filter(x => new Date(x) > targetDate);
console.log(biggerThanElements);

运行上面的代码,就能得到所有大于指定日期的元素啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:34:40