javascript - 如何按日期对 Javascript 对象数组进行排序?

标签 javascript arrays sorting date

我在按日期值对对象数组进行排序时遇到问题。我发现其他用户之前问过很多问题,我尝试了所有可能的解决方案,但仍然没有找到解决我的排序问题的方法。我也创建了两个不同的数组来测试排序功能,但仍然无法以正确的顺序获取日期。这是我的数据:

[Object { eventDate="12/12/2016",  display_order="5"},Object { eventDate="12/12/2016",  display_order="3"}]

[Object { eventDate="04/21/2016",  display_order="3"},Object { eventDate="04/21/2016",  display_order="1"}]

我使用此逻辑按日期值对数据进行排序:

entries.sort(function(a,b){
    var i = new Date(a.eventDate);
    var j = new Date(b.eventDate);
    return i-j;
});

使用此函数我的数据仍然没有按正确的顺序排序。然后我还尝试对数组进行排序,如下所示:

var dates = Object.keys(groupedByDate);

console.log(dates)

这是可变日期的输出:["12/12/2016", "04/21/2016"]

然后我尝试这样做:

dates.sort(function(a, b) {
    a = new Date(a.dates);
    b = new Date(b.dates);
    return a>b ? -1 : a<b ? 1 : 0;
});

我的输出仍然没有按正确的顺序对日期进行排序。我不确定我是否做错了什么,或者在这种情况下可能有其他问题。如果有人可以提供帮助,请告诉我。谢谢。

最佳答案

这里的答案是正确的,但你不应该使用 Date 构造函数或 Date.parse 来解析字符串。使用库并传递格式,或编写一个简单的函数,例如

function parseMDY(s) {
  var b = s.split('/');
  return new Date(b[2],b[0]-1,b[1]);
}

document.write(parseMDY('4/30/2016'));

所以现在你有:

entries.sort(function(a,b) {
  return parseMDY(a) - parseMDY(b);
});

关于javascript - 如何按日期对 Javascript 对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36478090/

相关文章:

javascript - 使用 Regex 将 location.hash 分解为数组

javascript - 重新计算样式 : why so stuttering?

arrays - 快速过滤元组数组

php - 如何存储和重置 PHP 数组指针?

algorithm - 什么是桶排序的好散列函数?

javascript - 如何使用 jQuery 从外部 URL 获取元标记

javascript - 如何在 Node.js 中执行 IIFE 脚本文件

c++ - 在排序和旋转的数组中搜索

ruby - 打印文件中出现次数最多的 n 个单词(字符串)

javascript - 如何从排序函数中返回未排序的项目?