История 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;
});
};
Было бы так, спасибо, что прочитали. Если у вас есть какие-либо предложения, пожалуйста, дайте мне знать в комментариях ниже.