Если вы уверены, что в ваших датах нет лет, вы можете попробовать это:
function sortDateStrArrayFrom(dayAndMonth, array) {
const dateFrom = new Date(dayAndMonth);
const datesBefore = [];
const datesEqual = [];
const datesAfter = [];
array.forEach(dateStr => {
const date = new Date(dateStr);
if (date < dateFrom) {
datesBefore.push(dateStr);
}
if (date === dateFrom) {
datesEqual.push(dateStr);
}
if (date > dateFrom) {
datesAfter.push(dateStr);
}
})
return [...datesEqual, ...datesAfter, ...datesBefore];
}
const arr = ['21. may', '01. jan', '05. feb', '07. jun', '20. dec'];
sortDateStrArrayFrom('18. mar', arr); // ["21. may", "07. jun", "20. dec", "01. jan", "05. feb"]
Если вам нужно, его можно изменить, указав дату в качестве входного параметра или установив один и тот же год для каждой даты для работы независимо от года