@methodPOST

Как отсортировать массив объектов по дате?

Не получается отсортировать массив объектов по дате. Сортирует, как угодно, но не в правильном порядке.

Пример массива:

all_orders = [{order_date: '1/11/2019'},{order_date: '17/10/2019'},{order_date: '31/12/2019'}];


Формат даты = (число, месяц, год)

Сортирует дату только по каким-то определённым числам. Это может быть либо дата, либо месяц, а нужно, как в календаре.

Код:

all_orders.sort(function(a,b){
    return new Date(a.order_date).getTime() - new Date(b.order_date).getTime(); // основное решение, которое я нашел, но сортирует либо по числу, либо по месяцу...
})

Может быть я не правильно использую формат даты?
  • Вопрос задан
  • 142 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Как получить дату из строки:

const parseDate = str => new Date(str.split('/').reverse().join('-'));

Сортируем исходный массив:

all_orders.sort((a, b) => parseDate(a.order_date) - parseDate(b.order_date));

Или собираем отсортированный новый:

const sortedOrders = all_orders
  .map(n => [ n, parseDate(n.order_date) ])
  .sort((a, b) => a[1] - b[1])
  .map(n => n[0]);
Ответ написан
IgorPI
@IgorPI
let unixtime = Date.parse('Wed, 09 Aug 1995 00:00:00 GMT');

Пример
А дальше сортируйте числа.


Unix-время представлено целым числом, которое увеличивается с каждой прошедшей секундой
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@abberati
frontend-разработчик
Проверьте, что такое new Date(order_date) — поймёте, в какую сторону копать дальше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы