Упорядочивание массива объектов по полю даты

Преобразуйте 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; при пользовательском вводе отдельно проверяйте формат и существование даты. Объекты не клонируются, меняется лишь порядок ссылок в новом массиве.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее