JavaScript 按降序排列日期的排序列表

标签 javascript function sorting

日期如下所示:

[‘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/

相关文章:

c - 试图导致 "worse case"快速排序

javascript - 需要更改 wordpress 的字体选项

c - c中返回表达式的用途

javascript - HTML <a> 标签事件顺序

c - 这个幂函数有什么问题吗?

C - 调用函数并给出二维数组

Angular ,类型错误 : Cannot read property 'sort' of undefined

jquery Datatables - 如何实现服务器端获取和客户端排序

javascript - 像示例一样制作 Turn.js 书?

javascript - 函数式编程 : list conditional branching/filtering (Javascript)