Как отсортировать объекты по возрастанию даты? - PullRequest
3 голосов
/ 22 сентября 2011

если у меня есть список объектов:

var objectList= LIST_OF_OBJECT;

каждый объект в списке содержит три атрибута: " имя ", " дата ", " пол "

Как отсортировать объекты в списке по возрастанию атрибута " date "?

(атрибут « date » содержит строковое значение, например «2002-08-29 21: 15: 31 + 0500»)

Ответы [ 4 ]

7 голосов
/ 21 января 2014

Если ваши объекты имеют информацию date в поле String :

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

или, если они есть в поле Дата :

yourArray.sort(function(a, b) { return a.date - b.date })
6 голосов
/ 22 сентября 2011

Метод Array.sort принимает функцию сортировки, которая принимает два элемента в качестве аргументов и должна возвращать:

  • <0, если первое меньше второго </li>
  • 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;
    }
});
1 голос
/ 12 июня 2017
yourArray.sort(function(a, b) { 
 a = new Date(a.date);
 b = new Date(b.date);
 return a >b ? -1 : a < b ? 1 : 0;
})
0 голосов
/ 30 апреля 2017

Вы можете попробовать:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...