首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何按日期属性对对象数组进行排序?

如何按日期属性对对象数组进行排序?
EN

Stack Overflow用户
提问于 2012-04-12 20:53:04
回答 19查看 1M关注 0票数 953

假设我有一个包含几个对象的数组:

代码语言:javascript
复制
var array = [{id: 1, date: Mar 12 2012 10:00:00 AM}, {id: 2, date: Mar 8 2012 08:00:00 AM}];

如何按日期元素从最接近当前日期和时间的日期开始对此数组进行排序?请记住,数组可能有许多对象,但为了简单起见,我使用了2。

我会使用排序函数和自定义比较器吗?

EN

回答 19

Stack Overflow用户

发布于 2013-08-15 12:20:46

@Phrogz的答案都很棒,但这里有一个更好、更简洁的答案:

代码语言:javascript
复制
array.sort(function(a,b){return a.getTime() - b.getTime()});

使用箭头函数方式

代码语言:javascript
复制
array.sort((a,b)=>a.getTime()-b.getTime());

点击此处:Sort date in Javascript

票数 230
EN

Stack Overflow用户

发布于 2012-04-12 21:06:04

在更正JSON之后,现在应该可以这样做了:

代码语言:javascript
复制
var array = [{id: 1, date:'Mar 12 2012 10:00:00 AM'}, {id: 2, date:'Mar 8 2012 08:00:00 AM'}];


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

Stack Overflow用户

发布于 2012-04-12 21:08:54

您的数据需要进行一些更正:

代码语言:javascript
复制
var array = [{id: 1, date: "Mar 12 2012 10:00:00 AM"},{id: 2, date: "Mar 28 2012 08:00:00 AM"}];

更正数据后,您可以使用这段代码:

代码语言:javascript
复制
function sortFunction(a,b){  
    var dateA = new Date(a.date).getTime();
    var dateB = new Date(b.date).getTime();
    return dateA > dateB ? 1 : -1;  
}; 

var array = [{id: 1, date: "Mar 12 2012 10:00:00 AM"},{id: 2, date: "Mar 28 2012 08:00:00 AM"}];
array.sort(sortFunction);​
票数 58
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10123953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档