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

如何比较日期接近度、按与当前日期的远近排序对象数组

日期范围判断与数组排序实现

核心需求说明

你需要实现两个能力:

  1. 判断两个日期间隔是否在指定的天数范围内
  2. 对包含日期字段的对象数组按「与当前日期的接近程度」排序,越接近当前日期的元素排在越靠前的位置

实现代码

// 当前日期,示例固定为2021/08/18,实际使用直接替换为new Date()即可
const currentDate = new Date('2021/08/18');
let listOfObjects = [ 
  { "user": "John", "date": "2021-08-20" }, 
  { "user": "Bob", "date": "2021-08-17" }, 
  { "user": "Joe", "date": "2021-08-09" } 
];

// 固定常量:1天对应的毫秒数,用于时间差转换
const ONE_DAY_MS = 24 * 60 * 60 * 1000;

// 1. 数组排序实现:按与当前日期的差值绝对值从小到大排序
listOfObjects.sort((a, b) => {
  const aDateDiff = Math.abs(new Date(a.date) - currentDate);
  const bDateDiff = Math.abs(new Date(b.date) - currentDate);
  return aDateDiff - bDateDiff;
});

// 2. 两个日期范围判断方法
// 参数说明:date1、date2为待判断的两个日期(支持字符串/Date对象),maxDayDiff为指定的最大间隔天数
function checkDateInterval(date1, date2, maxDayDiff) {
  const dayDiff = Math.abs(new Date(date1) - new Date(date2)) / ONE_DAY_MS;
  return dayDiff <= maxDayDiff;
}

// 输出验证排序结果
console.log(listOfObjects);

结果说明

运行上述代码后输出的数组和你给出的预期结果完全一致:

[ { "user": "Bob", "date": "2021-08-17" }, { "user": "John", "date": "2021-08-20" }, { "user": "Joe", "date": "2021-08-09" } ]

如果需要调整排序规则,比如优先展示未来日期再展示历史日期,只需要修改sort方法内的判断逻辑即可。
日期判断方法调用示例:判断2021-08-17和2021-08-18是否在3天间隔内,调用checkDateInterval('2021-08-17', '2021-08-18', 3)即可得到返回值true。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:15:03