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

标签 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. 每个游戏可以有更多的用户

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

例子:

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]};

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

最佳答案

像这样:

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 
  });
});

关于Javascript:如何将数组值添加到对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712178/

相关文章:

javascript - 在对象名称的第一部分使用 javascript 变量

javascript - React - 渲染 CSS 动画 onClick

javascript - 对 PhantomJS 代码进行故障排除以登录 Instagram

javascript - 在 jquery 中按时间戳对数组进行排序

javascript - 即使在调整大小时形成多行, float div 也应保持垂直居中。如何?

javascript - 从它自己的链接器函数编译指令

javascript - 如何检测弹出窗口关闭事件

javascript - 如果我在浏览器中禁用 JavaScript,内容 React.js 将不会加载

javascript - 无法在 socket.io 回调 React.js 中调用 setState

javascript - d3.在 inkscape :label ="foo" 上选择