Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么JS总是返回';无法读取属性';推动';未定义的';?_Javascript_Sockets_Socket.io - Fatal编程技术网

Javascript 为什么JS总是返回';无法读取属性';推动';未定义的';?

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

好的,我看到了这个问题的解决方案,但我不清楚为什么它对我不起作用? 我使用socket.io

//这是我的房间

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
这项工作