【发布时间】:2019-02-07 17:55:41
【问题描述】:
我正在尝试将课程与用户进度数据合并。我相信我有一个指针问题。
我已经成功完成了两个数组的内部合并。问题在于循环访问用户并且没有获得正确的课程数据以及附加的进度数据。
课程资料
let lessons = [
{“id”: “0106c568-70c0-4e56-8139-8e7f7d124f95",},
{“id”: “033e18a2-d470-4fd7-8bdc-53e610f3f784",},
{“id”: “d60f751c-d7d2-4dc6-9eda-a03bc5ebddc6",},
];
所有用户的进度
const usersProgresses = [
[
{
“id”: “cjrtmj9d601b908559oxe8hwk”,
“lesson”: “0106c568-70c0-4e56-8139-8e7f7d124f95",
“score”: null,
},
{
“id”: “cjrtmk2hv01bx0855yof2ehj4”,
“lesson”: “033e18a2-d470-4fd7-8bdc-53e610f3f784”,
“score”: 100,
},
{
“id”: “cjrtmlohd01cp0855jnzladye”,
“lesson”: “3724d7df-311c-46d9-934f-a9c44d9335ae”,
“score”: 20,
}
],
...
];
遍历用户并在课程中合并进度
// for each user
const result = usersProgresses.map(user => {
// merge progress and lesson data by lesson.id
const mergedProgress = [...lessons].map(lesson => {
return _.merge(lesson,_ .find(userProgress, { lesson: lesson.id }));
});
return mergedProgress;
});
result 中的预期数据:
[
[
{
“id”: “0106c568-70c0-4e56-8139-8e7f7d124f95”,
“lesson”: “0106c568-70c0-4e56-8139-8e7f7d124f95”,
“score”: null,
},
{
“id”: “033e18a2-d470-4fd7-8bdc-53e610f3f784",
“lesson”: “033e18a2-d470-4fd7-8bdc-53e610f3f784",
“score”: 100,
},
{
“id”: “d60f751c-d7d2-4dc6-9eda-a03bc5ebddc6”,
}
]
]
但得到:
[
[
{
“id”: “0106c568-70c0-4e56-8139-8e7f7d124f95”,
},
{
“id”: “033e18a2-d470-4fd7-8bdc-53e610f3f784”,
},
{
“id”: “d60f751c-d7d2-4dc6-9eda-a03bc5ebddc6”,
}
]
]
【问题讨论】:
-
这里是上面的一个例子:codepen.io/brantley/pen/jdYrZa?editors=0011
标签: javascript arrays lodash