【问题标题】:Group dates by month and sort then descending using lodash and moment按月份分组日期,然后使用 lodash 和 moment 降序排序
【发布时间】:2018-04-26 13:50:17
【问题描述】:

我有以下数组,其中包含下面定义的 JSON 对象

[
{
    "modDate": "2017-06-20"
},
{
    "modDate": "2017-10-24"
},
{
    "modDate": "2017-08-03"
}
]

我希望结果按月排在第一位,然后按月降序排序。

我试过用这个分组

grouped_items = _.groupBy(data, (b) ->
  moment(b.modDate).startOf('month').format('YYYY/MM')

但没有得到正确的结果。

【问题讨论】:

  • 只是一个错字,已修复

标签: javascript momentjs lodash


【解决方案1】:

如果我的理解正确,您希望按月份创建数据的分组集合,然后按月份的日期对值进行降序排序(因为在值中按月份排序没有意义)。

如果是这样,以下应该有效:

const data = [{"modDate":"2017-06-20"},{"modDate":"2017-06-25"},{"modDate":"2017-10-24"},{"modDate":"2017-10-20"},{"modDate":"2017-08-03"}];

let grouped_items = _.groupBy(data, (b) =>
  moment(b.modDate).startOf('month').format('YYYY/MM'));

_.values(grouped_items)
  .forEach(arr => arr.sort((a, b) => moment(a.modDate).day() - moment(b.modDate).day()));

console.log(grouped_items);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

【讨论】:

  • 还有什么方法可以对键(月份)进行排序吗? :)
猜你喜欢
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 2020-05-20
  • 1970-01-01
  • 2023-02-13
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多