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

Ant*_*hea 40 javascript arrays sorting date

我试图对每个对象包含的对象数组进行排序

var recent = [{id: "123",age :12,start: "10/17/13 13:07"} , {id: "13",age :62,start: "07/30/13 16:30"}];
Run Code Online (Sandbox Code Playgroud)

日期格式为: mm/dd/yy hh:mm

我想按照最近的第一个日期顺序排序.如果日期相同,则应按时排序.

我尝试了下面的排序功能.但它没有用.

recent.sort(function(a,b))
{
    a = new Date(a.start);
    b = new Date(b.start);
    return a-b;
});
Run Code Online (Sandbox Code Playgroud)

另外我应该如何遍历对象进行排序?就像是:

for (var i = 0; i < recent.length; i++)
    {
        recent[i].start.sort(function (a, b)
        {
            a = new Date(a.start);
            b = new Date(b.start);
            return a-b; 
        } );
    }
Run Code Online (Sandbox Code Playgroud)

数组中可以有任意数量的对象.

Chr*_*les 57

正如在评论中指出的那样,最近的定义是不正确的javascript.

但假设日期是字符串:

var recent = [
    {id: 123,age :12,start: "10/17/13 13:07"}, 
    {id: 13,age :62,start: "07/30/13 16:30"}
];
Run Code Online (Sandbox Code Playgroud)

然后像这样排序:

recent.sort(function(a,b) { 
    return new Date(a.start).getTime() - new Date(b.start).getTime() 
});
Run Code Online (Sandbox Code Playgroud)

有关W3Schools排序功能的更多细节

  • **注意**:不要忘记显式的 `return` 声明 (2认同)

Tom*_*ers 5

recent.sort(function(a,b) { return new Date(a.start).getTime() - new Date(b.start).getTime() } );
Run Code Online (Sandbox Code Playgroud)


sta*_*ool 5

ES6:

recent.sort((a,b)=> new Date(b.start).getTime()-new Date(a.start).getTime());
Run Code Online (Sandbox Code Playgroud)