Javascript推入一个对象

时间:2014-11-24 08:30:18

标签: javascript object

我一直在尝试这个论坛而且无法得到它。

我有一段代码来创建一个对象数组,如下所示:

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

所以这个函数每次调用时都会向数组添加一个新的Object,并且在用不同的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' }
}

我应该对代码做出哪些更改。

1 个答案:

答案 0 :(得分:4)

简单,对象在技术上并没有被推到,而是在该对象上定义新的键。 将数组切换为对象文字,只需添加键即可。

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