Javascript:如何将数组值添加到对象属性

时间:2016-04-19 08:02:55

标签: javascript

以下代码适用于node.js中的socket.io服务器

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var clients=[];
var gamename={};

io.on('connection', function(socket){
  socket.on('game', function(data){
    gamename[data.gamename]=data.number; //problem is here 
  });
});

gamename =游戏名称; number =用户ID;

  1. 可以有更多游戏;
  2. 每场比赛可以有更多用户
  3. 每当与服务器建立连接时,我在客户端发出一些数据(包括游戏名称和号码)的游戏事件。因此,每当新客户端连接到服务器时,在服务器中触发游戏事件。在服务器端的游戏事件中,我想将“数字”推送到对象属性gamename(变量)。

    示例:

    var games={};
    

    每当有用户ID为34的游戏扑克连接时 我想要做      var gamename ='扑克';

     gamename[gamename] -> I want this automatically created as array, or   anything, but I want to push user id's.
    

    产生的反对应该是。

    games={'poker' : [34]};
    

    如果我还有一个用户连接用户ID为45的扑克,

    games={'poker' : [34, 45]};
    

    并且如果用户使用用户67连接游戏板球

    games={'poker' : [34, 45],'cricket' : [67]};
    

    初始对象

    games={};
    

    经过一些连接(可以有n个连接)

    games={'poker' : [34, 45],'cricket' : [67]};
    

    如果我的问题不明确,我会详细解释,如果有人问的话。 提前致谢

1 个答案:

答案 0 :(得分:6)

像这样:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var clients=[];
var gamename={};

io.on('connection', function(socket){
  socket.on('game', function(data){
    gamename[data.gamename] = gamename[data.gamename] || [];
    gamename[data.gamename].push( data.number ); //no more problem 
  });
});