Скажем, у меня есть массив из нескольких объектов:
var array = [{id: 1, date: Mar 12 2012 10:00:00 AM}, {id: 2, date: Mar 8 2012 08:00:00 AM}];
Как я могу отсортировать этот массив по элементу даты в порядке от даты, ближайшей к текущей дате и времени вниз? Имейте в виду, что в массиве может быть много объектов, но для простоты я использовал 2.
Буду ли я использовать функцию сортировки и пользовательский компаратор?
ОБНОВИТЬ:
В моем конкретном случае я хотел, чтобы даты были расположены от самых последних до самых старых. В итоге мне пришлось изменить логику простой функции следующим образом:
array.sort(function(a, b) {
a = new Date(a.dateModified);
b = new Date(b.dateModified);
return a>b ? -1 : a<b ? 1 : 0;
});
Это сортирует даты из самых последних.
javascript
datetime
ryandlf
источник
источник
Ответы:
Самый простой ответ
Более общий ответ
Или более кратко:
Общий, мощный ответ
Определите пользовательскую неперечислимую
sortBy
функцию, используя преобразование Шварца для всех массивов:Используйте это так:
Если ваша дата не сопоставима напрямую, сделайте из нее сопоставимую дату, например
Вы также можете использовать это для сортировки по нескольким критериям, если вы возвращаете массив значений:
См. Http://phrogz.net/JS/Array.prototype.sortBy.js для получения дополнительной информации.
источник
return b-a;
в простом ответе?Ответы @Phrogz великолепны, но вот отличный, более краткий ответ:
Использование функции стрелки
найти здесь: сортировать дату в Javascript
источник
a - b
также будет работать. Таким образом,array.sort((a, b) => a - b)
(ES6)После исправления JSON это должно работать для вас:
источник
Ваши данные нуждаются в некоторых исправлениях:
После исправления данных вы можете использовать этот фрагмент кода:
источник
0
туда, где это необходимо!Я рекомендую GitHub: Array sortBy - лучшая реализация
sortBy
метода, использующего преобразование ШварцаНо сейчас мы собираемся попробовать этот подход Gist: sortBy-old.js .
Давайте создадим метод сортировки массивов, позволяющий упорядочивать объекты по какому-либо свойству.
Создание функции сортировки
Установка несортированных данных
Используй это
Наконец, мы упорядочиваем массив по
"date"
свойству какstring
Если вы хотите игнорировать регистр букв, установите
"parser"
обратный вызов:Если вы хотите обработать поле «дата» как
Date
тип:Здесь вы можете поиграть с приведенным выше примером:
jsbin.com/lesebi
источник
Это следует делать, когда ваша дата в этом формате (дд / мм / гггг).
Тогда позвони
sortByDate(myArr);
источник
Вы можете использовать sortBy в подчеркивании js.
http://underscorejs.org/#sortBy
Образец:
источник
Я собираюсь добавить это здесь, так как некоторые пользователи не могут решить, как инвертировать этот метод сортировки.
Чтобы отсортировать по «подходящему», мы можем просто поменять местами a & b следующим образом:
Обратите внимание, что
a
теперь это слева, аb
справа: D!источник
Я лично использую следующий подход для сортировки дат.
источник
мне удалось добиться сортировки, используя следующие строки:
источник
источник
Для тех, кто хочет сортировать по дате (британский формат), я использовал следующее:
источник
Я только что взял преобразование Шварца, изображенное выше и сделанное как функция. Он принимает
array
, сортировкуfunction
и логическое значение в качестве входных данных:источник
Спасибо Ганеш Санап. сортировка элементов по полю даты от старого к новому. Используй это
источник
Если, как и я, у вас есть массив с датами, отформатированными так, как
YYYY[-MM[-DD]]
если бы вы хотели упорядочить более конкретные даты, а не менее конкретные, я предложил эту удобную функцию:источник
источник