在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
相关产品推荐
相关产品推荐

