2013-01-15 44 views
0

我使用节点js创建多人游戏网站。所以每一个插座连接时我添加插座阵列中的这样节点js中的数组表现得很奇怪

var users = []; 
var games = []; 
var joinKey = []; 
var key = 0; 
var usersKey = 101; 
var gamesKey = 201; 

io.sockets.on('connection', function (socket) { 
    socket.on('connect', function(){ 
     console.log('connect'); 
     var clientId = usersKey; 
     socket.clientId = clientId; 
     users[usersKey] = socket; 
     usersKey++; 
     socket.emit('getClientId', clientId); 
     console.log(socket.clientId + ' connected'); 
     console.log('Total users: ' + users.length); 
    }); 

这里总用户显示102的用户密钥是101,它会自动故事的空白值从0到100,这是不正常的我想。另外,如果我检索使用索引其他阵列插座,这是不确定的,如果该索引是字符串,如“G201”

socket.on('createNewGame', function(){ 
     var game = []; 
     var clientId = socket.clientId; 
     game[clientId] = socket; 
     console.log(game); 
     var gameId = 'g' + gamesKey; 
     gamesKey++; 
     games[gameId] = game; 
     console.log('Total Games: ' + games.length) 
     socket.gameId = gameId; 

     var publicKey = ++key; 
     joinKey[publicKey] = gameId; 

     socket.emit('gameCreated', publicKey); 
    }); 

我没有得到如何插入和取出,如果这是数组的行为在这里

回答

2

要回答你的第一个点:

阵列采用从0

运行数字索引当手动放置值在101它将填补值的其余部分,因为它具有运行从0开始,这些将被填充未定义。 (按照安德鲁·巴雷特评论

要回答你的第二点:

如果你需要有一个“关联数组”,或者至少人们称之为关联数组,那么你应该使用对象。

game= new Object(); 
game["g1"]=... 
game["g25"]=... 
... 
+1

它可能更清楚地说, –

+0

@乔恩乐施会“的数组会随着不确定填充”,让我试试这个... – 1Mayur

+0

我将能够使用以获取他们的obj =游戏[“G232”] ?? – 1Mayur