var dates = ['2017-02-01', '2017-01-01', '2016-02-03', '2018-02-02', '2014-12-25'];
var orderedDates = dates.sort(); // ['2017-01-01', '2017-02-01', '2018-02-02', '2016-02-03', '2014-12-25']
我收集了不同年份的日期(瞬间对象)。我只需要按“ ddMM”格式(例如跳过年份)对日期进行排序。
有没有办法做到这一点?
创建dates
数组的副本,为所有日期设置同一年-似乎不是一个好的解决方案。
使用lodash .orderBy
答案 0 :(得分:1)
您应该使用“ MMDD”格式,而不是“ DDMM”。
并且不必将其转换回片刻,因为它只是对数组进行排序。
var orderedDates = _.orderBy(dates, e => moment(e).format('MMDD'));
答案 1 :(得分:0)
您可以将orderBy
与一系列指定所需顺序的函数一起使用(这些函数从date
对象获得month
和moment
):>
const date = (s) => moment(s, 'YYYY-MM-DD');
const dates = [date('2017-02-01'), date('2017-01-01'), date('2016-02-03'), date('2018-02-02'), date('2014-12-25')];
const result = _.orderBy(dates, [m => m.date(), m => m.month()]);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>