2014-11-24 71 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