How to sort objects by date ascending order?

流过昼夜 提交于 2020-01-31 18:26:09

问题


if I have a list of object:

var objectList= LIST_OF_OBJECT;

each object in the list contains three attributes: "name", "date","gender"

How to sort the objects in the list by "date" attribute ascending order?

(the "date" attribute contain string value like "2002-08-29 21:15:31+0500")


回答1:


The Array.sort method accepts a sort function, which accepts two elements as arguments, and should return:

  • < 0 if the first is less than the second
  • 0 if the first is equal to the second
  • > 0 if the first is greater than the second.

.

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

You're lucky that, in the date format you've provided, a date that is before another date is also < than the date when using string comparisons. If this wasn't the case, you'd have to convert the string to a date first:

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:


If your objects have the date information within a String field:

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

or, if they have it within a Date field:

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



回答3:


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



回答4:


You can try:

<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>


来源:https://stackoverflow.com/questions/7513040/how-to-sort-objects-by-date-ascending-order

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!