Okey,我看到了解决此问题的方法,但是我不清楚为什么它对我不起作用? 我使用socket.io
//这是房间
var rooms = {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
};
这是听众
socket.on('joinRoom', function (data) {
}
为什么
rooms[1].push(1); // work?
为什么
rooms["1"].push(1); // work?
为什么?
rooms[data.room].push(1); // not work?
为什么?
rooms["" + data.room].push(1) not work?
为什么?
rooms[data.room] = [];
rooms[data.room] = 1; // work?
data.room返回1;
答案 0 :(得分:2)
即使条件不清楚(特别是不知道data
是什么),也可能导致以下情况的唯一原因:
rooms[data.room] = [];
rooms[data.room] = 1;
与此同时:
rooms[data.room].push(1);
data.room
返回的内容不是rooms
的键。
尝试执行此操作rooms[data.room] = 1;
,然后console.log(rooms);
可能会找到6个键而不是5个键。
顺便说一句,当您设置密钥/访问其值时,无需将密钥转换为字符串。它会自动转换。甚至可以将对象转换为字符串[object Object]
。