0

我在一个数组中有许多对象。这些对象有一个“时间”属性,它是一个日期字符串。

items = [
    {time: "2013-03-01T10:46:11Z"},
    {time: "2013-03-03T10:46:11Z"},
    {time: "2013-03-02T10:46:11Z"}
]

我希望按那个“时间”属性对数组进行排序。

我已阅读Sort Javascript Object Array By DateJavascript Date Sorting,但我似乎无法使这些解决方案中的任何一个(转换为 Date 对象或排序为字符串)工作。

我的排序功能:

items.sort(function(first, second){
    return new Date(first.time) < new Date(second.time) ? 1 : -1;
})

测试结果:

items.forEach(function(item){
    console.log(item.time)
})

回报:

2013-03-01T10:46:11Z
2013-03-03T10:46:11Z
2013-03-02T10:46:11Z

3 月 1 日,3 月 3 日,3 月 2 日。我做错了什么?

4

1 回答 1

1

您在比较器函数中调用字段“日期”而不是“时间”。此外,该函数应返回一个整数,而不是布尔值:

  return new Date(first.time) - new Date(second.time);

这可能不适用于所有浏览器。如果您所有的时间都是世界时,只需将它们作为字符串进行比较:

  return first.time > second.time ? 1 : first.time === second.time ? 0 : -1;
于 2013-03-06T17:13:49.343 回答