История JavaScript — сортировка записей по датам

Я с нетерпением ждал возможности написать сообщение в блоге, которое я могу добавить в категорию «истории». Я хотел бы рассказать вам, что мне приходилось делать в последнее время, оперируя датами в JavaScript.

Моей задачей было получить все доступные записи из базы данных, просмотреть их и отсортировать по дате подачи. Самые новые должны были быть первыми в списке.

1. Как я это сделал?

Я создал функцию sortRecordsByDate. Функция принимала один параметр — список записей из базы данных. Это массив объектов.

function sortRecordsByDate(records) {
    
};

Формат даты, исходящий из базы данных, был: 11.12.2018, и мне пришлось сохранить этот формат для пользователя. Я знал, что хочу сразу же вернуть новый массив объектов после отображения через него.

return records.map(record => {
   const dateString = records.submissionDate.split('/').reverse().toString();
   const dateTimestamp = Date.parse(dateString);
   
   record.submissionDate = dateTimestamp;

   return record;
 })

Я решил использовать карту, которая позволяет мне возвращать новый массив. Позвольте мне рассказать вам, что происходит внутри.
Я получаю свойство «submissionDate» и разделяю его значение косой чертой, оно преобразует его в массив, что позволяет мне использовать обратную функцию и преобразовывать его в строку.

Зачем мне его менять? Мне пришлось изменить его, потому что, когда вы хотите создать новую дату с помощью конструктора «новая дата», формат даты должен быть: 2018/11/12.

Следующим шагом является преобразование нашей даты в форму даты с меткой времени. На следующем шаге я присваиваю новое значение свойству ‘submissionDate’. В конце я возвращаю новую запись, которая содержит новое значение метки времени вместо даты.

Мы все? Еще нет. Нам еще предстоит разобраться.

return records.map(record => {
   const dateString = record.submissionDate.split('/').reverse().toString();
   const dateTimestamp = Date.parse(dateString);

   record.submissionDate = dateTimestamp;

   return record;
 }).sort((a, b) => b.submissionDate – a.submissionDate);

Простая формула сортировки позволила мне отсортировать записи от самых последних до самых старых, используя для этого отметку времени.
Теперь я правильно отсортировал все объекты. Хотя у меня все еще было одно дело. Мне пришлось преобразовать временные метки в удобную для пользователя форму даты.

.map(record => {
  const submissionDate = new Date(record.submissionDate).toLocaleDateString('en-GB');
  record.submissionDate = submissionDate;

  return record;
 });

Я использовал метод карты, объединенный в цепочку, чтобы вывести наши старые даты путем преобразования временной метки в локальную строку даты.
Функция выглядит так:

function sortRecordsByDate(records) {
    return records.map(record => {
         const dateString = record.submissionDate.split('/').reverse().toString();
         const dateTimestamp = Date.parse(dateString);

         record.submissionDate = dateTimestamp;

         return record;
    }).sort((a, b) => b.submissionDate – a.submissionDate).map(record => {
        const submissionDate = new Date(record.submissionDate).toLocaleDateString('en-GB');
        record.submissionDate = submissionDate;

        return record;
   });
};

Было бы так, спасибо, что прочитали. Если у вас есть какие-либо предложения, пожалуйста, дайте мне знать в комментариях ниже.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *