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