2016-04-19 11 views
4

次のコードは、Node.jsの中socket.ioサーバ用ですJavascriptを:objectに配列の値を追加する方法プロパティ

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 =ゲームの名前。 番号=ユーザーID。

  1. さらに多くのゲームがあります。
  2. がゲーム

あたりのユーザーより数とすることができるサーバーとの接続が確立されるたびに、私は(gamename、および番号をincludeing)いくつかのデータを使用してクライアント側のゲームイベントを放出しています。したがって、新しいクライアントがサーバーに接続するたびに、ゲームイベントがサーバーでトリガーされます。サーバー側のゲームイベントで、オブジェクトプロパティgamename(変数)に「数値」をプッシュします。

例:私は するvar gamename =「ポーカー」を実行したい34 ユーザーIDとゲームポーカー例えば接続があるたびに

var games={}; 

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

結果の反対があります。

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

私は1人の以上のユーザーが、ユーザーID 45とポーカーのために接続している場合は、

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

とAAユーザーは、ユーザーをゲームクリケットのために67

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

最初のオブジェクトを接続している場合は

games={}; 

いくつかのconnectio 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

関連する問題