开发者问题收集

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

2016-04-19
1533

以下代码用于 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. 每个游戏可以有更多用户

每当与服务器建立连接时,我都会在客户端发出带有一些数据(包括游戏名称和数字)的游戏事件。因此,每当有新客户端连接到服务器时,服务器就会触发游戏事件。在服务器端的游戏事件中,我想将“number”推送到对象属性 gamename(变量)。

示例:

var games={};

每当有连接时,例如,对于用户 ID 为 34 的游戏扑克,我想执行 var gamename='poker';

 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个回答

像这样:

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 
  });
});
Tudor Constantin
2016-04-19