Как правильно сортировать по дате?

Не получается правильно отсортировать массив с объектами у которых есть поля c датой. формат даты "DD-MM-YYYY HH:mm:ss".

Как я сортирую

 posts.sort((a, b) => {
          if (a.original_date < b.original_date) {
            return 1;
          }
          if (a.original_date > b.original_date) {
            return -1;
          }
          return 0;
        });

получаю:

12-05-2021 22:12:32 
04-06-2021 09:50:32
04-06-2021 09:25:28
04-06-2021 09:24:30
03-06-2021 18:01:28
03-06-2021 10:35:28

нужно:

04-06-2021 09:50:32
04-06-2021 09:25:28
04-06-2021 09:24:30
03-06-2021 18:01:28
03-06-2021 10:35:28
12-05-2021 22:12:32 

Ответы (1 шт):

Автор решения: UModeL

Для начала приведите строку даты к правильному формату, переставив число и месяц, с помощью replace(). А далее, сравнивайте даты:

posts = [
  '12-05-2021 22:12:32',
  '04-06-2021 09:50:32',
  '04-06-2021 09:25:28',
  '04-06-2021 09:24:30',
  '03-06-2021 18:01:28',
  '03-06-2021 10:35:28'
];

posts.sort((a, b) => new Date(b.replace(/(\d{2})-(\d{2})/, '$2-$1')) - new Date(a.replace(/(\d{2})-(\d{2})/, '$2-$1')));

console.log(posts);

→ Ссылка