为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

数据结构描述var users = [     {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)性能优先(首选)处理结束后的数据结构var authPlayers = {     '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'},     ] }语言及工具描述JavaScriptNode.jsLodashunderscoreasyncbluebird一切你想用的工具都可以在线急等...是时候表演真正的技术了
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

var authPlayers = {};

        for(var i=0;i<users.length;i++){

            var use = users[i];

            var useIds = users[i].authPlayerIds;

            delete use.authPlayerIds;

            for(var j=0;j<useIds.length;j++){

                if( authPlayers[useIds[j]] == undefined ){

                    authPlayers[useIds[j]]=[];

                    authPlayers[useIds[j]].push(use);

                }else{

                    authPlayers[useIds[j]].push(use);

                }

                //console.log( authPlayers[useIds[j]]  )

            }

        }


查看完整回答
反对 回复 2018-10-29
?
大话西游666

TA贡献1817条经验 获得超14个赞

var users = [

    {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]},

]

var ret = {}

users.forEach(function(e){

    var ap = e.authPlayerIds

    ap.forEach(function(p){

        var t = {}

        if (ret[p]) {

            t.id = e.id || null

            t.username = e.username || null

        } else {

            ret[p] = []

            t.id = e.id || null

            t.username = e.username || null

        }

        ret[p].push(t)

    })

})


查看完整回答
反对 回复 2018-10-29
  • 2 回答
  • 0 关注
  • 938 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信