【发布时间】:2021-07-05 02:36:01
【问题描述】:
我有一个如此结构化的对象数组。
let array = [
{date: "22/03/2021 17:57", y: 10, type: "dil"},
{date: "22/03/2021 17:58", y: 1, type: "dil"},
{date: "15/04/2021 14:52", y: 3, type: "dil"},
{date: "24/03/2021 14:52", y: 4, type: "dil"},
{date: "01/04/2021 14:52", y: -2, type: "spp"},
{date: "24/03/2021 14:53", y: -5, type: "spp"},
{date: "18/04/2021 16:28", y: 3, type: "spp}
]
我必须按日期对其进行排序,但我不知道该怎么做,因为日期是一个字符串,如果我使用排序方法
array.sort((a,b) => (a.x > b.x) ? 1 : ((b.x > a.x) ? -1 : 0))
它是根据前两个字符排序的,而不是通过年、月、日、小时和分钟来正确排序。
有什么想法吗?我确信这很容易,但我很困惑。
【问题讨论】:
-
将日期重新格式化为 ISO-8601 并在比较中使用它。遗憾的是,虽然 javascript 确实在日期上提供了
toISOString方法,但 it doesn't have a built-in format for european datetimes 只有 RFC 2822 和 ISO8601,并且不提供通用格式字符串,因此您必须手动解析输入(或使用类似 moment.js 的东西) . -
看看我的答案,也许它会帮助你:)你可以通过添加简单的库来完成它
-
如果您使用来自 dupe target 的答案,请使用来自 RobG 的答案。仅针对这一特定情况更改
String的原型,就像在接受的答案中一样,是矫枉过正... -
你的日期字符串没有有效的格式,你需要改变它你可以使用date-fns.org/docs/Getting-Started这个库可以帮助你修复日期格式。因此,在具有固定日期格式之后,您可以像这样进行排序 new Date(date1).valueOf() - new Date(date2).valueOf()
-
@NverAbgaryan “您的日期字符串没有有效的格式” - 什么在该有效日期格式上无效?
标签: javascript arrays sorting