Автор оригинала: Robert Wozniak.
Я с нетерпением ждал, чтобы написать сообщение в блоге, которое я могу добавить в категорию «историй». Я хотел бы сказать вам, что мне пришлось сделать в последнее время, работая на даты в JavaScript.
Моя задача состояла в том, чтобы получить все доступные записи из базы данных, пройти через них и сортировать их по дате представления. Новейшие должны были быть первыми в списке.
1. Как я это сделал?
Я создал функцию под названием SortRecordsBydate. Функция принимала один параметр, который представляет собой список записей из базы данных. Это массив объектов.
function sortRecordsByDate(records) { };
Формат даты, поступающий из базы данных: 12/11/2018, и мне пришлось сохранить этот формат для пользователя. Я знал, что хочу вернуть новый массив предметов иммистиеталий после сопоставления через него.
return records.map(record => { const dateString = records.submissionDate.split('/').reverse().toString(); const dateTimestamp = Date.parse(dateString); record.submissionDate = dateTimestamp; return record; })
Я решил использовать карту, которая позволяет мне вернуть новый массив. Позвольте мне сказать вам, что происходит внутри. Я получаю свойство «подчинение» и расщеплению его значения по SLASH, он преобразует его на массив, что позволяет мне использовать обратную функцию и преобразовывать ее в строку.
Почему я поменяю это? Я должен был отменить его, потому что, когда вы хотите создать новую дату, используя конструктор «New Date», формат даты должен быть: 2018/11/12.
Следующим шагом является преобразование нашей даты в форме временной метки времени. На следующем шаге я назначаю новую ценность для свойства «Подача». В конце я возвращаю новую запись, которая содержит новое значение времени времени вместо даты.
Мы все? Еще нет. Мы все еще должны его отсортировать.
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);
Простая формула сортировки позволила мне отсортировать записи от последней до самой древнейшей, используя Timestamp для него. Теперь у меня были все объекты, отсортированные правильно. Я все еще был один, чтобы сделать, хотя. Мне пришлось преобразовать свои временные метки для читабельной формы даты для пользователя.
.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; }); };
Это было бы это, спасибо за чтение. Если у вас есть какие-либо предложения, пожалуйста, дайте мне знать в комментариях ниже.