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

时间:2011-09-22 10:05:36

标签: javascript jquery javascript-events

如果我有一个对象列表:

var objectList= LIST_OF_OBJECT;

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

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

(“日期”属性包含字符串值,如“2002-08-29 21:15:31 + 0500”)

4 个答案:

答案 0 :(得分:7)

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

yourArray.sort(function(a, b) { return new Date(a.date) - new Date(b.date) })

或者,如果他们在 Date 字段中拥有它:

yourArray.sort(function(a, b) { return a.date - b.date })

答案 1 :(得分: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;
    }
});

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

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;
    }
});

答案 2 :(得分:1)

yourArray.sort(function(a, b) { 
 a = new Date(a.date);
 b = new Date(b.date);
 return a >b ? -1 : a < b ? 1 : 0;
})

答案 3 :(得分:0)

您可以尝试:

<script src="https://cyberknight.000webhostapp.com/arrange.js">
var a =[-1,0,5,4,3,2,6,1,1];
var b = totzarrange(a)
console.log(b);
</script>