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