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

在TypeScript中对字符串格式的日期范围数组降序排序

按日期范围从新到旧排序的解决方案

针对你给出的字符串格式日期范围数组,要实现最新的日期范围排在数组开头,核心是提取每个范围的结束日期(或开始日期,按需选择),转换成可直接比较的数值后反向排序。

原数组

const dateRanges = [
  "10-2022 - 12-2022",
  "08-2022 - 09-2022",
  "07-2023 - 10-2023",
  "04-2022 - 07-2022",
  "01-2023 - 06-2023",
  "01-2022 - 03-2022"
];

排序实现(按结束日期从新到旧)

// 自定义排序逻辑:提取结束日期转成YYYYMM数字,反向排序
dateRanges.sort((rangeA, rangeB) => {
  // 拆分每个范围的结束日期部分
  const [endMonthA, endYearA] = rangeA.split(" - ")[1].split("-");
  const [endMonthB, endYearB] = rangeB.split(" - ")[1].split("-");
  
  // 转换为YYYYMM格式的数字(如202310),方便数值比较
  const endDateNumA = Number(endYearA + endMonthA);
  const endDateNumB = Number(endYearB + endMonthB);
  
  // 反向排序,让数值大的(日期更新的)排在前面
  return endDateNumB - endDateNumA;
});

排序结果

执行后数组会变为:

[
  "07-2023 - 10-2023",
  "01-2023 - 06-2023",
  "10-2022 - 12-2022",
  "08-2022 - 09-2022",
  "04-2022 - 07-2022",
  "01-2022 - 03-2022"
]

可选调整

  • 如果需要按开始日期从新到旧排序,只需把代码中提取日期的索引从[1]改为[0]即可
  • 用数字比较而非Date对象,可避免时区差异导致的排序错误,同时更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:40:25