如何按特定格式的日期对JavaScript对象数组进行排序
问题根源
你当前的排序逻辑是直接对日期字符串做字典序比较,没有将字符串解析为可正确识别年、月、日优先级的日期类型,因此无法得到正确的排序结果。
解决方案
在排序比较前先将两个待比较的日期字段转换为标准Date对象,再通过时间戳差值完成比较即可:
const bills = [ { name: "ghaith", type: "transport", date: "12 may 21", }, { name: "Alex", type: "Restaurants", date: "15 oct 20", } ]; // 按日期降序排序(最新日期排在最前) bills.sort((a, b) => { const dateA = new Date(a.date); const dateB = new Date(b.date); return dateB - dateA; })
补充说明
- 若需要升序排序(最早日期排在最前),只需将return语句改为
return dateA - dateB即可。 - 你使用的
日 月份缩写 年格式的日期字符串可被原生Date构造函数正常解析,无需额外做格式适配。
内容的提问来源于stack exchange,提问作者Ghaith Diab
相关产品推荐
相关产品推荐

