Дата сортировки в Javascript
Я извлек из ajax запрос в ленту новостей. В этом объекте есть дата в этом формате:
Wed, 22 May 2013 08:00:00 GMT
Я хотел бы отсортировать все объекты по дате. Можно ли это сделать с помощью Javascript?
UPDATE
Используя этот кусок кода, он отлично работает!
array.sort(function(a,b){
var c = new Date(a.date);
var d = new Date(b.date);
return c-d;
});
Ответы
Ответ 1
1) Вы не можете сортировать объекты. Порядок ключей объекта произвольный.
2) Если вы хотите отсортировать массив по дате (и они уже являются объектами даты), выполните следующие действия:
array.sort ( function (date1, date2){
return date1 - date2
});
Если вам сначала нужно преобразовать их в объекты даты, выполните следующие действия (следуя структуре данных в соответствии с вашим комментарием ниже):
array.sort ( function (a, b){
return new Date(a.pubDate) - new Date(b.pubDate);
});
Пример
Ответ 2
sorting dates ascending or descending
times = ["01-09-2013", "01-09-2013", "27-08-2013", "27-08-2013", "28-08-2013", "28-08-2013", "28-08-2013", "28-08-2013", "29-08-2013", "29-08-2013", "30-08-2013", "30-08-2013", "31-08-2013", "31-08-2013"]
function dmyOrdA(a,b){ return myDate(a) - myDate(b);}
function dmyOrdD(a,b){ return myDate(b) - myDate(a);}
function myDate(s){var a=s.split(/-|\//); return new Date(a[2],a[1]-1,a[0]);}
times.sort(dmyOrdA);
console.log(times)
Ответ 3
Вы также можете использовать знак подчеркивания /lodash sortBy
Здесь используется символ подчеркивания js для сортировки даты:
var log = [{date: '2016-01-16T05:23:38+00:00', other: 'sample'},
{date: '2016-01-13T05:23:38+00:00',other: 'sample'},
{date: '2016-01-15T11:23:38+00:00', other: 'sample'}];
console.log(_.sortBy(log, 'date'));