2016-04-19 41 views
4

下面的代碼是在node.js中socket.io服務器的Javascript:如何增加數組值對象屬性

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 = user id;

  1. 可以有更多的遊戲數量;
  2. 可以有更多的用戶的數目每場

,我在客戶端與一些數據發射的遊戲事件(includeing gamename,和數目),只要建立了與服務器的連接。所以每當新的客戶端連接到服務器時,遊戲事件就會在服務器中被觸發。在服務器端的遊戲事件中,我想將「number」推送到對象屬性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]}; 

。如果AA用戶對於遊戲板球與用戶連接67

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

初始對象

games={}; 

經過一定的連接ns(可以有n個連接)

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

如果我的問題不清楚,我會詳細解釋一下,如果有人問。 在此先感謝

回答

5

像這樣:

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

謝謝,但你能解釋一下這行做gamename [data.gamename] = gamename [data.gamename] || [];我是javascript – scriptkiddie

+0

的新手,它初始化gamename [data.gamename]爲空數組,如果它尚未初始化。 –

+0

偉大的兄弟,謝謝。 – scriptkiddie

相關問題