如何按日期升序对对象进行排序?

Lee*_*eem 3 javascript jquery javascript-events

如果我有一个对象列表:

var objectList= LIST_OF_OBJECT;
Run Code Online (Sandbox Code Playgroud)

列表中的每个对象包含三个属性:" 名称 "," 日期 "," 性别 "

如何按" 日期 "属性升序对列表中的对象进行排序?

(" date "属性包含字符串值,如"2002-08-29 21:15:31 + 0500")

tur*_*ula 7

如果您的对象在String字段中包含日期信息:

yourArray.sort(function(a, b) { return new Date(a.date) - new Date(b.date) })
Run Code Online (Sandbox Code Playgroud)

或者,如果他们在日期字段中有它:

yourArray.sort(function(a, b) { return a.date - b.date })
Run Code Online (Sandbox Code Playgroud)

  • 恭喜你在这里得到了唯一理智的答案。 (3认同)
  • 如果它们是[有效日期字符串](/sf/ask/3620068161/),你甚至根本不需要“new Date”同一时区。 (2认同)

Mat*_*att 6

Array.sort方法接受一个sort函数,它接受两个元素作为参数,并应返回:

  • 如果第一个小于第二个,则<0
  • 如果第一个等于第二个,则为0
  • 如果第一个大于第二个,则> 0.

.

objectList.sort(function (a, b) {
    var key1 = a.date;
    var key2 = b.date;

    if (key1 < key2) {
        return -1;
    } else if (key1 == key2) {
        return 0;
    } else {
        return 1;
    }
});
Run Code Online (Sandbox Code Playgroud)

您很幸运,在您提供的日期格式中,在另一个日期之前的日期也不是<使用字符串比较的日期.如果不是这种情况,您必须先将字符串转换为日期:

objectList.sort(function (a, b) {
    var key1 = new Date(a.date);
    var key2 = new Date(b.date);

    if (key1 < key2) {
        return -1;
    } else if (key1 == key2) {
        return 0;
    } else {
        return 1;
    }
});
Run Code Online (Sandbox Code Playgroud)