Преобразуйте dd.mm.yyyy в числовой ключ yyyymmdd и сравнивайте ключи. sort выполняйте на копии массива, если исходный порядок нужно сохранить.
Упорядочивание массива объектов по полю даты
Преобразуйте dd.mm.yyyy в числовой ключ yyyymmdd и сравнивайте ключи. sort выполняйте на копии массива, если исходный порядок нужно сохранить.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо отсортировать массив объектов по возрастанию даты, представленной в виде строки формата dd.mm.yyyy.
let items = [
{ date: "10.01.2017" },
{ date: "01.12.2002" },
{ date: "11.02.2021" },
{ date: "05.11.2016" }
];
Ответ
Преобразуйте dd.mm.yyyy в числовой ключ yyyymmdd и сравнивайте ключи. sort выполняйте на копии массива, если исходный порядок нужно сохранить.
const key = text => {
const [day, month, year] = text.split('.').map(Number);
return year * 10000 + month * 100 + day;
};
const sorted = [...items].sort((a, b) => key(a.date) - key(b.date));
Порядок дат: 01.12.2002, 05.11.2016, 10.01.2017, 11.02.2021. Решение предполагает корректные календарные даты указанного формата. Не полагайтесь на Date.parse для dd.mm.yyyy; при пользовательском вводе отдельно проверяйте формат и существование даты. Объекты не клонируются, меняется лишь порядок ссылок в новом массиве.