javascript - 按月份对日期进行分组,然后使用 lodash 和 moment 降序排序
问题描述
我有以下数组,其中包含下面定义的 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>
推荐阅读
- maven - Pitest 报告聚合目标抱怨传递依赖
- android - .aar 库中是否可以有 AccountAuthenticator 和帐户管理?
- laravel - 无法将我上传的图像保存到本地磁盘文件夹
- r - 运行尝试计算 Akaike 信息标准时 R studio 出现警告错误
- elasticsearch - elasticsearch - 为什么索引的所有分片都分配在一个节点上?
- java - 在java中声明嵌套泛型
- php - 使用 Laravel、Vue、Axios 和 Nginx 的意外 301 重定向,具有不同的 url 相同的调用
- spring-boot - 将实体分配给持久性单元(spring-boot,spring-data-jpa)
- autohotkey - 在按下其他键时发送一个键不会向按下的键发送垃圾邮件
- flutter - Flutter PointerEvent vs OnTap,一个有效,另一个无效