Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 node.js为每个不同的房间定义相同的阵列_Javascript_Arrays_Node.js_Socket.io_Node.js Domains - Fatal编程技术网

Javascript node.js为每个不同的房间定义相同的阵列

Javascript node.js为每个不同的房间定义相同的阵列,javascript,arrays,node.js,socket.io,node.js-domains,Javascript,Arrays,Node.js,Socket.io,Node.js Domains,正如我在标题中所说,我想为每个房间定义一个不同的数组。例如: 对于room1,数组将为var colors=[“红色”、“蓝色”], 对于room2,数组将是var colors=[“黑色”、“白色”]。(名称相同但内容不同) 这是我的简化服务器: var io = require('socket.io').listen(3000).set('log level', 2); io.sockets.on('connection', function (socket) { var room

正如我在标题中所说,我想为每个房间定义一个不同的数组。例如:

对于room1,数组将为
var colors=[“红色”、“蓝色”],

对于room2,数组将是
var colors=[“黑色”、“白色”]
。(名称相同但内容不同)

这是我的简化服务器:

var io = require('socket.io').listen(3000).set('log level', 2);

io.sockets.on('connection', function (socket) {
    var room = socket.handshake.query.room;  // room1 -- ws://localhost:3000/?room=room1

    socket.join(r); // add client to 'room1' room.
    // var colors = ['yellow','green'];
    io.sockets.in(r).emit('m', colors);
}
我不想要类似于
if(h=='room1'){var colors=['a','b'];}elseif(room='room2'){var colors=['y','z'];}
的东西,因为 将会有很多房间


我怎样才能做到这一点?我应该使用名称空间而不是房间吗?

然后使用房间名称作为键的对象以及相应的数组。然后使用当前房间名称从颜色列表中自动获取颜色数组:

var colorList = {
      'room1' : ['a','b'],
      'room2' : ['y','z']
    }
  , colors = colorList[room]
  ;