5

我已经从 ajax 查询中检索到一个新闻提要。在这个对象中,有一个格式如下的日期:

Wed, 22 May 2013 08:00:00 GMT

我想按日期对所有对象进行排序。是否可以使用 Javascript 做到这一点?

更新

使用这段代码可以正常工作!

array.sort(function(a,b){
var c = new Date(a.date);
var d = new Date(b.date);
return c-d;
});
4

3 回答 3

10

1)您不能对对象进行排序。对象键的顺序是任意的。

2)如果要按日期对数组进行排序(并且它们已经是日期对象),请执行以下操作:

array.sort ( function (date1, date2){
     return date1 - date2
});

如果您首先需要将它们转换为日期对象,请执行以下操作(根据您的评论遵循数据结构):

array.sort ( function (a, b){
       return new Date(a.pubDate) - new Date(b.pubDate);
});

例子

于 2013-05-22T11:07:34.793 回答
5

您也可以使用下划线/lodash sortBy

这里使用下划线 js 对日期进行排序:

 var log = [{date: '2016-01-16T05:23:38+00:00', other: 'sample'}, 
            {date: '2016-01-13T05:23:38+00:00',other: 'sample'}, 
            {date: '2016-01-15T11:23:38+00:00', other: 'sample'}];

  console.log(_.sortBy(log, 'date'));
于 2016-01-16T13:34:31.547 回答
1
sorting dates ascending or descending
times = ["01-09-2013", "01-09-2013", "27-08-2013", "27-08-2013", "28-08-2013", "28-08-2013", "28-08-2013", "28-08-2013", "29-08-2013", "29-08-2013", "30-08-2013", "30-08-2013", "31-08-2013", "31-08-2013"]
function dmyOrdA(a,b){ return myDate(a) - myDate(b);}
function dmyOrdD(a,b){ return myDate(b) - myDate(a);}
function myDate(s){var a=s.split(/-|\//); return new Date(a[2],a[1]-1,a[0]);}

times.sort(dmyOrdA);
console.log(times)
于 2013-08-29T10:17:25.780 回答