日期如下所示:
[‘Oct 7, 2009’, ‘Nov 10, 2009’, ‘Jan 10, 2009’, ‘Oct 22, 2009’, …]
月份始终是完整月份名称的前三个字符(“January”=>“Jan”、“February”=>“Feb”……)。
日期由一位或两位数字组成(1, 2, … 31),前面没有零。
日期后面总是有一个逗号。年份始终为四位数。
我正在尝试编写一个函数,该函数将按降序排列日期中的字符串列表
这是我目前拥有的:
let dates = [
'Oct 7, 2009',
'Nov 10, 2009',
'Jan 10, 2009',
'Oct 22, 2009'
]
let sortDate = function (date1, date2) {
if (date1 > date2) return -1
if (date1 < date2) return 1
return 0
}
dates.sort(sortDate)
for (let i = 0; i < dates.length; i++) {
document.write(i + ': ' + dates[i])
}
输出显示了这一点:
0: Oct 7, 2009
1: Oct 22, 2009
2: Nov 10, 2009
3: Jan 10, 2009
一月应该是第一个。
最佳答案
在您的 sort
回调中,返回以纪元(毫秒数)表示的日期差。您可以使用Date.parse
为此:
return Date.parse(date1) - Date.parse(date2);
let dates = ['Oct 7, 2009', 'Nov 10, 2009', 'Jan 10, 2009', 'Oct 22, 2009'];
let sortDate = function (date1, date2) {
return Date.parse(date1) - Date.parse(date2);
}
dates.sort(sortDate)
for (let i = 0; i < dates.length; i++) {
console.log(i + ': ' + dates[i])
}
关于JavaScript 按降序排列日期的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973231/