Javascript Node.js多维对象和动态变量名称

Javascript Node.js多维对象和动态变量名称,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在试验node.js socket.io和不同的房间。我对所有连接的用户都有昵称对象,但问题是在这个对象中,我不能为用户ID存储重复的值,因此我不能让同一个用户使用不同的房间。现在,我想为每个房间创建不同的对象,而不是为所有用户创建这个昵称对象。那个么我该怎么做呢:昵称[specific_room][user.id]=代码的其余部分?那么,我应该为每个房间单独列出数据?还是应该为每个单独的房间使用动态变量名?你有什么建议 nicknames[user.id]={ 'ni

我正在试验node.js socket.io和不同的房间。我对所有连接的用户都有昵称对象,但问题是在这个对象中,我不能为用户ID存储重复的值,因此我不能让同一个用户使用不同的房间。现在,我想为每个房间创建不同的对象,而不是为所有用户创建这个昵称对象。那个么我该怎么做呢:昵称[specific_room][user.id]=代码的其余部分?那么,我应该为每个房间单独列出数据?还是应该为每个单独的房间使用动态变量名?你有什么建议

  nicknames[user.id]={

        'nickname': user.name,
        'socketId': socket.id,
        'room': room,
};
结果是:

    { '1':
       { nickname: 'User1',
         socketId: '/#0rb7zbg0RInwKAaMAAAC',
         room: '4444',
       }, 
      '3':
       { nickname: 'User 2',
         socketId: '/#tGZPL8IUPvUoie1CAAAD',
         room: '3333',
        } 
}
我想完成什么:

    { 3333 {     { '1':
               { nickname: 'User1',
                 socketId: '/#0rb7zbg0RInwKAaMAAAC',

                },
              '3':
               { nickname: 'User 2',
                 socketId: '/#tGZPL8IUPvUoie1CAAAD',

                } 
        }
    }

    4444 {
    }
}
其中3333和4444是房间唯一ID。
我希望我说得很清楚。

我对socket.io没有经验,但是你可以很容易地用普通的javascript做类似的事情(可能不是最优雅的解决方案,但效果很好):


这里有类似于
socket.join(这里是房间id)
socket.leave(这里是房间id)
。Join将用户添加到中提供的文件室ID中,leave将用户从该文件室中删除。我也在试验NodeJS和socket.io:)
var obj = { 
  '1': { 
    nickname: 'User1',
    socketId: '/#0rb7zbg0RInwKAaMAAAC',
    room: '4444',
   }, 
  '3': { 
    nickname: 'User 2',
    socketId: '/#tGZPL8IUPvUoie1CAAAD',
    room: '3333',
  } 
};

var obj2 =  {};


for(var i in obj) {
  obj2[obj[i].room] = {};
  obj2[obj[i].room][i] = { 
    nickname: obj[i].nickname, 
    socketId: obj[i].socketId 
  };
}

console.log(obj2);