【发布时间】:2018-12-26 16:49:46
【问题描述】:
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
【问题讨论】:
-
如果您只想对日期和月份执行排序,则必须将年份和 ddMM 分开。然后对ddMM进行排序。但是您还必须在对 ddMM 执行排序时跟踪年份。所以你必须创建一个 obj 类型的日期。那么你必须在 ddMM 属性上使用 _.orderBY 。您将获得日期对象的排序数组。
-
我刚刚创建了这个,如果您已经尝试过这个方法,请跳过。
var _ = require('lodash') var dates = ['2017-02-01', '2017-01-01', '2016-02-03', '2018-02-02']; var o = dates.map((d)=> { var s = d.split("-") return { year: s[0], ddMM: s[1] + "-" + s[2] } }) console.log(_.orderBy(o, ['ddMM'], ['asc'])) -
@varatharajan hm,谢谢,会检查
-
您能否将预期输出添加到您的问题中?
-
@Akrion 就像代码行中的注释
标签: javascript sorting momentjs lodash