JavaScript按降序排序日期后跟时间[重复]

Posted

技术标签:

【中文标题】JavaScript按降序排序日期后跟时间[重复]【英文标题】:JavaScript sort date followed by time in descending order [duplicate] 【发布时间】:2018-06-07 16:27:06 【问题描述】:

我在使用 javascript 按降序对日期后跟时间进行排序时遇到了一些问题。以下是一些输入:

[chatroomID: "1", date: "12/26/2017", time: "10:31:32 PM",
chatroomID: "2", date: "12/26/2017", time: "10:38:01 PM",
chatroomID: "3", date: "12/26/2017", time: "10:35:14 PM"]

我想按降序对它们进行排序,最新的将在顶部,但我不知道该怎么做。

想要的输出:

[chatroomID: "2", date: "12/26/2017", time: "10:38:01 PM",
chatroomID: "3", date: "12/26/2017", time: "10:35:14 PM",
chatroomID: "1", date: "12/26/2017", time: "10:31:32 PM"]

如果结果来自同一日期,那么我会按照时间排序。否则,最新日期将在最前面。有什么想法吗?

谢谢!

【问题讨论】:

首先你应该将日期和时间转换为日期对象然后你应该看看Sort Javascript Object Array By Date 【参考方案1】:

只需连接datetime,然后将其解析为Date 并获取时间戳。从那时起,它只是普通的旧排序。

const datetimes = [
  chatroomID: "1", date: "12/26/2017", time: "10:31:32 PM",
  chatroomID: "2", date: "12/26/2017", time: "10:38:01 PM",
  chatroomID: "3", date: "12/26/2017", time: "10:35:14 PM"
]

const sorted = datetimes.sort((a, b) => 
  const aDate = new Date(a.date + ' ' + a.time)
  const bDate = new Date(b.date + ' ' + b.time)
  
  return bDate.getTime() - aDate.getTime()
)

console.log(sorted)

更新:Marcel Gwerder 评论中的链接答案表明您可以完全跳过 getTime() 并比较日期。

【讨论】:

我认为将new DateDate.parse 与字符串窗台一起使用并不安全,请参阅the note on MDN。 @MarcelGwerder 公平点——我怀疑浏览器会与 OP 的格式不一致——但我不会对此发誓。

以上是关于JavaScript按降序排序日期后跟时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字典值按降序排序[重复]

流和 Lambda 表达式按降序排序 [重复]

Objective-C - tableView,按降序排序JSON数组[重复]

如何根据特定值按降序对数组进行排序[重复]

按降序对矢量进行排序c ++ [重复]

根据值按降序对 Map<Key,Value> 进行排序 [重复]