Это намного проще, чем вы думаете. :-) Когда вы используете -
для операндов, которые являются экземпляром Moment, они приводятся к числам, которые являются их значением в миллисекундах с начала эпохи. Итак:
dates.sort((a, b) => a - b);
... сортирует их по возрастанию (сначала самые ранние даты), а
dates.sort((a, b) => b - a;
... сортирует их по убыванию (сначала самые последние даты).
Я с радостью использовал там краткие функции стрелок, поскольку вы уже используете функции ES2015 + в своем коде.
Пример:
let dates = [
moment("2017-01-12"),
moment("2018-01-12"),
moment("2017-07-12"),
moment("2016-07-30")
];
dates.sort((a, b) => a - b);
console.log(dates);
dates = [
moment("2017-01-12"),
moment("2018-01-12"),
moment("2017-07-12"),
moment("2016-07-30")
];
dates.sort((a, b) => b - a);
console.log(dates);
.as-console-wrapper {
max-height: 100% !important;
}
The built-in Stack Snippets console shows Moment instances by calling toString, which shows is the ISO date string. But they're Moment instances (you can see that in the browser's real console).
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>