js 循环**数据结构处理**问题, 遇到瓶颈,求方案(考虑性能)

数据结构描述
varusers=[
{id:1,username:'123',authPlayerIds:[1001,1002,1003]},
{id:2,username:'qwe',authPlayerIds:[1003,1004,1005]},
{id:3,username:'fdf',authPlayerIds:[1002,1007,1088]},
{id:4,username:'dsa',authPlayerIds:[1001,1022,1033]},
...
//注意:数据在`20000`以上
]
需求描述
计算authPlayerIds字段中的每一项(id)所出现的次数以及包含它的用户(user)
性能优先(首选)
处理结束后的数据结构
varauthPlayers={
'1001':[
{id:1,username:'123'},
{id:4,username:'dsa'}
],
'1002':[
{id:1,username:'123'},
{id:3,username:'fdf'},
{id:4,username:'dsa'},
],
'1003':[
{id:1,username:'123'},
{id:2,username:'qwe'},
]
}
语言及工具描述
JavaScript
Node.js
Lodash
underscore
async
bluebird
一切你想用的工具都可以
在线急等...
是时候表演真正的技术了
30秒到达战场
浏览 396回答 2
2回答

潇湘沐

varauthPlayers={};for(vari=0;i

大话西游666

varusers=[{id:1,username:'123',authPlayerIds:[1001,1002,1003]},{id:2,username:'qwe',authPlayerIds:[1003,1004,1005]},{id:3,username:'fdf',authPlayerIds:[1002,1007,1088]},{id:4,username:'dsa',authPlayerIds:[1001,1022,1033]},]varret={}users.forEach(function(e){varap=e.authPlayerIdsap.forEach(function(p){vart={}if(ret[p]){t.id=e.id||nullt.username=e.username||null}else{ret[p]=[]t.id=e.id||nullt.username=e.username||null}ret[p].push(t)})})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript