我已经从 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;
});
我已经从 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;
});
1)您不能对对象进行排序。对象键的顺序是任意的。
2)如果要按日期对数组进行排序(并且它们已经是日期对象),请执行以下操作:
array.sort ( function (date1, date2){
return date1 - date2
});
如果您首先需要将它们转换为日期对象,请执行以下操作(根据您的评论遵循数据结构):
array.sort ( function (a, b){
return new Date(a.pubDate) - new Date(b.pubDate);
});
您也可以使用下划线/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'));
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)