本帖最后由 SailZhao520 于 2023-2-17 11:48 编辑
[JavaScript] 纯文本查看 复制代码
const dates = ['2022/12/3', '2023/2/8', '2023/10/9', '2023/11/16', '2022/12/2', '2023/1/6'];
// 将日期字符串转换为 Date 对象并排序
const sortedDates = dates.map(date => new Date(date)).sort((a, b) => a - b).map(date => date.toLocaleDateString('zh-Hans-CN'));
console.log(sortedDates); // ["2022/12/2", "2022/12/3", "2023/1/6", "2023/2/8", "2023/10/9", "2023/11/16"]
或者
[JavaScript] 纯文本查看 复制代码
// 原始的日期字符串数组
const dates = ['2022/12/3', '2023/2/8', '2023/10/9', '2023/11/16', '2022/12/2', '2023/1/6'];
// 存储日期对象时间戳的缓存数组
const dateCache = [];
// 缓存数组长度
const len = dates.length;
// 遍历日期字符串数组,将字符串转换为 Date 对象,并将对象存储到原数组中,同时存储对象时间戳到缓存数组中
for (let i = 0; i < len; i++) {
const date = new Date(dates[i]); // 将字符串转换为 Date 对象
dates[i] = date; // 将对象存储到原数组中
dateCache[i] = date.getTime(); // 将对象时间戳存储到缓存数组中
}
// 对原数组进行排序
dates.sort((a, b) => a.getTime() - b.getTime());
// 遍历原数组,将对象格式化为指定的字符串格式
for (let i = 0; i < len; i++) {
// 使用简单的字符串截取操作完成日期格式化,避免使用 toLocaleDateString 方法的性能开销
dates[i] = `${dates[i].getFullYear()}/${dates[i].getMonth() + 1}/${dates[i].getDate()}`;
}
// 打印排序后的结果
console.log(dates); // ["2022/12/2", "2022/12/3", "2023/1/6", "2023/2/8", "2023/10/9", "2023/11/16"]
|