2014-11-24 81 views
0

我一直在嘗試這個論壇一段時間,不能得到它。JavaScript推入對象

我有一段代碼來創建一個對象的數組,它是這樣的:

var allUsers = new Array(); 
function addObjectToArray(userData){ 
    colorCode = '#'+Math.floor(Math.random()*16777215).toString(16); 
    userImage = "avatar"+Math.floor(Math.random()*11)+".jpg"; 
    newuserData = {}; 
    newuserData[userData.userID] = {"nickName":userData.nickName,"SocketId":socket.id,"colorCode":colorCode,"userImage":userImage}; 
    allUsers.push(newuserData); 
} 

所以這個功能增加了一個新的對象數組每次它被稱爲與調用這個函數兩次後不同PARAMS我得到一個數組像這樣

[ { '886': 
    { nickName: 'MOhan', 
     SocketId: '9AMRe2v2e-hWuMeBAAAC', 
     colorCode: '#d3af07', 
     userImage: 'avatar6.jpg' } }, 
    { '172': 
    { nickName: 'Anil', 
     SocketId: 'a5VU5pCzWecMHM2FAAAD', 
     colorCode: '#22b913', 
     userImage: 'avatar4.jpg' } } ] 

什麼,我想的卻是一個對象是這樣的:

{ 
    '886': 
    { nickName: 'MOhan', 
     SocketId: '9AMRe2v2e-hWuMeBAAAC', 
     colorCode: '#d3af07', 
     userImage: 'avatar6.jpg' } , 
    '172': 
    { nickName: 'Anil', 
     SocketId: 'a5VU5pCzWecMHM2FAAAD', 
     colorCode: '#22b913', 
     userImage: 'avatar4.jpg' } 
} 

我應該對代碼做些什麼改變。

+0

你可以從數組中獲取每個對象,爲什麼你必須改變你放入數組的方式? – Tom 2014-11-24 08:34:21

回答

4

簡單來說,對象在技術上並沒有被推到,而是你在那個對象上定義了新的鍵。 切換您的陣列的對象文字,只需將其添加到它。

var allUsers = {}; 
function addObjectToObject(userData) { 
    //logic 
    allUsers[userData.userId] = newuserData; 
} 
+0

是不是缺少'newuserData'? – Dwza 2014-11-24 08:34:03

+0

@Dwza是和否,我省略了所有的目的邏輯:) – 2014-11-24 08:34:50

+0

哦,我明白了...沒有意識到'//邏輯' - 評論:D – Dwza 2014-11-24 08:36:31