我正在编写一个程序,该程序返回一堆带有分配给用户的时间戳的任务,我想知道如何最好地转换涉及显示的两个数据集。
我的任务数据结构如下:
tasks = [{
"id": 1,"resource_id": 1,"day": '2019-10-29'
},{
"id": 2,"day": '2019-10-28'
},{
"id": 3,"day": '2019-10-30'
},{
"id": 4,"resource_id": 2,"day": '2019-10-31'
},{
"id": 5,{
"id": 6,{
"id": 7,"resource_id": 3,{
"id": 8,"day": '2019-10-29'
}]
用户喜欢:
users = [{
"id": 1,"first_name": "Anthony","last_name": "Smith",},"first_name": "Jason","last_name": "Jones","first_name": "Billy","last_name": "Phllips",}]
-
task.resource_id
链接到user.id
。 -
task.day
将永远是工作日。 - 用户一周可能有多个任务,但每天只有一个。
所以我想我现在真正想要实现的是如何转换我的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
升序进行排序,但是我不禁感到有一个比目前为止更干净,更好的解决方案。
我非常感谢您的帮助! :)
谢谢。