Как решить Sort the Date HackerRank Challenge?

Если вы хотите проверить или улучшить свои навыки программирования, HackerRank - одна из платформ, которую вы должны попробовать.

Проблема с сортировкой дат:

Отсортируйте список дат в порядке возрастания с учетом формата данных, показанного ниже:

Каждая дата имеет вид dd mmm yyyy, где:

  • dd - это набор {0–31}
  • mmm находится в наборе {январь, февраль, март, апр, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь}
  • yyyy - четыре цифры

Пример

dates = ['01 Mar 2017','03 Feb 2017','15 Jan 1998']

Массив дат сортируется по ['15 Jan 1998','03 Feb 2017','01 Mar 2017'].

Описание функции

Завершите функцию sortDates в редакторе ниже.

sortDates имеет следующий параметр:

string dates[n]: массив строк, каждое поле разделено пробелом

Возврат:

string arr[n]: функция должна возвращать массив строк даты, отсортированных в хронологическом порядке по возрастанию.

Ограничения

  • 2 ≤ длина свиданий ≤ 30

Решение:

В JavaScript мы можем использовать sort()method для сортировки элементов массива с использованием локального алгоритма и возврата отсортированного массива.

Например:

const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
Output: Array ["Dec", "Feb", "Jan", "March"]

Порядок сортировки по умолчанию - по возрастанию. Поскольку наш ввод - это массив дат, но в строке нам нужно предоставить функцию сравнения внутри метода сортировки, которая будет сортировать даты. Синтаксис для этого:

sort((firstEl, secondEl) => { 
   //sorting logic here... 
})

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

Объединив все вышеперечисленное, мы получим решение:

Поскольку здесь используется алгоритм на месте, копия массива dates не создается.

Учить больше





Понимание асинхронного JavaScript
Как асинхронный работает в JavaScript enlear.academy