Javascript 为什么JS总是返回';无法读取属性';推动';未定义的';?
好的,我看到了这个问题的解决方案,但我不清楚为什么它对我不起作用? 我使用socket.io //这是我的房间Javascript 为什么JS总是返回';无法读取属性';推动';未定义的';?,javascript,sockets,socket.io,Javascript,Sockets,Socket.io,好的,我看到了这个问题的解决方案,但我不清楚为什么它对我不起作用? 我使用socket.io //这是我的房间 var rooms = { "1": [], "2": [], "3": [], "4": [], "5": [] }; 这位是听众 socket.on('joinRoom', function (data) { } 为什么 为什么 为什么 rooms[data
var rooms = {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
};
这位是听众
socket.on('joinRoom', function (data) {
}
为什么
为什么
为什么
rooms[data.room].push(1); // not work?
rooms[data.room] = [];
rooms[data.room] = 1; // work?
为什么
rooms["" + data.room].push(1) not work?
为什么
rooms[data.room].push(1); // not work?
rooms[data.room] = [];
rooms[data.room] = 1; // work?
数据室返回1 即使条件不太清楚(尤其是不知道
数据是什么),以下可能有效的唯一原因是:
rooms[data.room] = [];
rooms[data.room] = 1;
同时,这并不意味着:
rooms[data.room].push(1);
这是data.room
返回的内容不是rooms
的键
尝试这样做rooms[data.room]=1代码>然后控制台日志(房间)代码>您很可能会找到6个键,而不是5个键
顺便说一下,当您设置key/access其值时,不需要将键转换为字符串。它是自动转换的。它甚至可以转换对象(转换为字符串[object object]
)。即使条件不太清楚(特别是,不知道数据是什么),以下操作可能有效的唯一原因是:
rooms[data.room] = [];
rooms[data.room] = 1;
同时,这并不意味着:
rooms[data.room].push(1);
这是data.room
返回的内容不是rooms
的键
尝试这样做rooms[data.room]=1代码>然后控制台日志(房间)代码>您很可能会找到6个键,而不是5个键
顺便说一下,当您设置key/access其值时,不需要将键转换为字符串。它是自动转换的。它甚至可以将对象转换为字符串。数据的值是多少?@EmielZuurbier C#public void JoinRoom(){jsonObject.AddField(“room”,currentRoomIndex);socketIOComponent.Emit(“JoinRoom”,jsonObject);jsonObject.Clear()}我发送room的索引(从0到5)检查客户端代码中作为数据接收的内容,因为这是您遇到问题的地方。同时向我们展示您如何确定它不是working@charlietfl好的,我解决了。怎么做if(data.room==0)
socket.room=0
这项工作数据的值是多少?@EmielZuurbier C#public void JoinRoom(){jsonObject.AddField(“room”,currentRoomIndex);socketIOComponent.Emit(“JoinRoom”,jsonObject);jsonObject.Clear()}我发送房间的索引(从0到5)检查客户端代码中作为数据接收的内容,因为这是您遇到问题的地方。同时向我们展示您如何确定它不是working@charlietfl好的,我解决了。怎么做if(data.room==0)
socket.room=0
这项工作