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

如何遍历日期对象数组并找出最早与最晚日期?

找出日期数组中的最早和最晚日期

首先注意你给出的数组存在语法错误,日期字符串必须用引号包裹,正确的数组定义应该是:

const datesList = ["2022-07-15T19:41:12.620Z", "2022-07-20T11:21:52.596Z", "2022-07-13T11:21:50.596Z"];

下面提供几种可行的实现方式:

方法一:修正后的forEach循环实现

如果坚持用forEach,核心是先初始化最早、最晚日期,再逐个比较更新:

// 初始化最早和最晚日期为数组第一个元素的Date对象
let earliestDate = new Date(datesList[0]);
let latestDate = new Date(datesList[0]);

datesList.forEach(dateStr => {
  const currentDate = new Date(dateStr);
  // 比当前最早日期更早,就更新
  if (currentDate < earliestDate) {
    earliestDate = currentDate;
  }
  // 比当前最晚日期更晚,就更新
  if (currentDate > latestDate) {
    latestDate = currentDate;
  }
});

console.log("最早日期:", earliestDate);
console.log("最晚日期:", latestDate);

方法二:用时间戳结合Math方法简化代码

这种写法更简洁,不需要手动写遍历逻辑:

// 把所有日期转成时间戳(数字格式,方便比较大小)
const timestamps = datesList.map(date => Date.parse(date));
// 找出最小、最大时间戳
const earliestTimestamp = Math.min(...timestamps);
const latestTimestamp = Math.max(...timestamps);
// 转回Date对象
const earliestDate = new Date(earliestTimestamp);
const latestDate = new Date(latestTimestamp);

console.log("最早日期:", earliestDate);
console.log("最晚日期:", latestDate);

方法三:用reduce一次遍历完成计算

reduce可以在一次遍历中同时算出最早和最晚日期:

const { earliest, latest } = datesList.reduce((acc, dateStr) => {
  const currentDate = new Date(dateStr);
  return {
    earliest: currentDate < acc.earliest ? currentDate : acc.earliest,
    latest: currentDate > acc.latest ? currentDate : acc.latest
  };
}, {
  // 初始值设为数组第一个元素的Date对象
  earliest: new Date(datesList[0]),
  latest: new Date(datesList[0])
});

console.log("最早日期:", earliest);
console.log("最晚日期:", latest);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:48:18