我试图弄清楚如何Map一个新的对象数组,通过检查每个用户数组,并在存在公共用户的情况下,将整个数组移动到一个新属性中,该属性也具有公共的notebookId,从而创建团队。
我有一个对象数组,结构如下:
const usersByNotebooks =
[
{
"notebookId": "abc",
"users": [1, 2, 3, 4]
},
{
"notebookId": "cde",
"users": [2, 3, 4]
},
{
"notebookId": "fgh",
"users": [3, 4, 5]
},
{
"notebookId": "qqq",
"users": [33, 16, 12]
},
]
因此,对于上面的数据,它将变成这样:
const teams =
[
{
"notebooksOnTeam": ["abc", "cde", "fgh"],
"usersOnTeam": [1, 2, 3, 4, 5]
},
{
"notebooksOnTeam": "qqq",
"usersOnTeam": [33, 16, 12]
},
]
我正在使用javascript,很难把逻辑写下来。
2条答案
按热度按时间fwzugrvs1#
reduce
在数组对象上循环并检查:find
方法中的任何现有团队都不匹配,则创建一个新团队。oxalkeyp2#
您可以查看结果集中的任何对象,然后获取同一组的第一个对象,并添加所有其他找到的对象,最后添加实际值,或者稍后添加新对象。
这种方法适用于未排序和未连接的项目,这些项目稍后会得到一个关节。
这是一个抽象的解决办法,任何长度的团体是连通的。
它分三步工作:
一个二个一个一个