Javascript 推送到一个对象中

Javascript push into an object

本文关键字:一个对象 Javascript      更新时间:2023-09-26

我已经尝试了一段时间,但无法得到它。

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

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

所以这个函数每次调用时都会向数组添加一个新对象,在使用不同的参数调用这个函数两次后,我得到一个这样的数组

[ { '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' }
}

我应该对代码进行哪些更改。

很简单,对象在技术上不会被推送到,而是在该对象上定义新键。将数组切换为对象文字,只需向其添加键即可。

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