【问题标题】:How to sort array by date如何按日期对数组进行排序
【发布时间】:2017-06-16 14:38:21
【问题描述】:

这是我的数组

arr=[
{
    date:'2017-06-14 14:03:49'
},
{
    date:'2017-04-20 10:25:32'
},
{
    date:'2017-06-02 15:57:16'
},
{
    date:'2017-06-02 17:52:05'
},
{
    date:'2017-06-02 21:47:13'
},
{
    date:'2017-06-14 14:01:31'
}
]

我需要按日期对数组进行排序。

我该怎么做,

请多多指教,

谢谢

【问题讨论】:

  • 不知道这是否是完全相同的。在这种情况下,由于日期字符串是 ISO 8601,比较函数可以简单地为return a.localCompare(b),所以根本不需要转换为日期。

标签: javascript arrays


【解决方案1】:

使用Array#sort方法,在compare函数中解析字符串,并通过取差返回对应的值。

var arr = [{
  date: '2017-06-14 14:03:49'
}, {
  date: '2017-04-20 10:25:32'
}, {
  date: '2017-06-02 15:57:16'
}, {
  date: '2017-06-02 17:52:05'
}, {
  date: '2017-06-02 21:47:13'
}, {
  date: '2017-06-14 14:01:31'
}];

arr.sort(function(a, b) {
  // convert date object into number to resolve issue in typescript
  return  +new Date(a.date) - +new Date(b.date);
})

console.log(arr);

参考 git 中的问题:Error when doing arithmetic operations on date

或参考:TypeScript sort by date not working

【讨论】:

  • @Pranav C Balan 感谢您的回复。实际上我正在使用打字稿。我得到这个错误左侧算术运算必须是任何类型。请给我建议
  • @ANISUNDAR :更新了答案,您需要将其转换为数字,因为它是日期对象....可以通过在解析日期之前添加+ 来完成
  • 这也适用于排序 SQL smalldatetime 即2018-07-05T20:24:00.000Z
猜你喜欢
  • 2016-11-07
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
  • 2021-02-23
相关资源
最近更新 更多