我有以下数组,其中包含下面定义的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')
但没有得到正确的结果。
最佳答案
如果我对您的理解正确,则希望按月创建数据的分组集合,然后按月的日期降序对值进行排序(因为按月对值进行排序没有意义)。
如果是这样,则应执行以下操作:
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>