javascript - JS 如何最好地分组并进行值查找/替换
问题描述
我正在编写一个程序,它返回一堆任务,其中时间戳分配给用户,我想知道如何最好地转换涉及的两个数据集以进行显示。
我的任务数据结构如下所示:
tasks = [{
"id": 1,
"resource_id": 1,
"day": '2019-10-29'
},
{
"id": 2,
"resource_id": 1,
"day": '2019-10-28'
},
{
"id": 3,
"resource_id": 1,
"day": '2019-10-30'
},
{
"id": 4,
"resource_id": 2,
"day": '2019-10-31'
},
{
"id": 5,
"resource_id": 2,
"day": '2019-10-30'
},
{
"id": 6,
"resource_id": 2,
"day": '2019-10-28'
},
{
"id": 7,
"resource_id": 3,
"day": '2019-10-28'
},
{
"id": 8,
"resource_id": 3,
"day": '2019-10-29'
}]
用户喜欢这样:
users = [{
"id": 1,
"first_name": "Anthony",
"last_name": "Smith",
},
{
"id": 2,
"first_name": "Jason",
"last_name": "Jones",
},
{
"id": 3,
"first_name": "Billy",
"last_name": "Phllips",
}]
task.resource_id
链接到user.id
.task.day
将永远是一个工作日。- 一个用户在一周内可能有多个任务,但每天只有 1 个。
所以我想我现在真正想要实现的是如何转换我的 2 个数据集以最好地显示用户的所有任务,其中所述用户的任务按日期排序。
在上面的数据示例中,输出如下所示:
Anthony Smith: Mon 28th, Tue 29th, Wed 30th
Jason Jones: Mon 28th, Wed 30th, Thur 31st
Billy Phillips: Mon 28th, Tue 29th
我不在乎用户名是否按该用户的较早任务排序,只要对该用户内的任务日期进行排序即可。
到目前为止,我想出什么来改变我的任务:
let grouped_tasks = tasks.reduce(function (r, a) {
r[a.resource_id] = r[a.resource_id] || [];
r[a.resource_id].push(a);
return r;
}, Object.create(null));
它本质上按 对任务进行分组,并将其task.resource.id
附加task.resource_id
为该分组的键。这应该可以更容易地进行查找,users.id
然后task.resource_id
获取用户的名字和姓氏。
从那里我还必须按day
升序排序,但是我不禁觉得有一个比我迄今为止所取得的更清洁、更好的解决方案来解决这个问题。
我真的很感激帮助!:)
谢谢。
解决方案
推荐阅读
- mongodb - 无法使用 Moongoos 连接到 Mongodb
- excel - 无法使用 VBA 更改单元格日期格式
- mongodb - 在 mongodb 中聚合嵌套数组
- java - Aspose:使用 USE_DESTINATION_STYLES 的 InsertDocument 不起作用
- java - Selenium 获取传输数据的大小(资源大小)
- excel - 如何将行剪切到另一张纸上,然后在没有循环冻结的情况下删除 + 移动下一行?
- python - 如何使用python修改JSON文件中的多个值
- javascript - 将对象数组映射到新组中
- python - 如何计算 csv 列中的元素数并根据该计数返回另一列中的元素?
- java - 不同线路上的多个系统输入连接在一起。爪哇