2014-11-24 2 views
0

Я пробовал этот fora немного и не могу его получить.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); 
} 

Так эта функция добавляет новый объект в массив каждый раз, когда он вызывается и после вызова этой функции дважды разные Титулы я получаю что-то вроде этого массива

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

ответ

4

Легко, объекты технически не подталкиваются, а вместо этого вы определяете новые ключи на этом объекте. Переключите свой массив для объектного литерала и просто добавьте к нему ключ.

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

отсутствует ли 'newuserData'? – Dwza

+0

@Dwza Да и нет, я совершенно не использовал всю логику :) –

+0

О, я вижу ... не понял логику '// logic': D – Dwza