Несмотря на то, что условия не так ясны (в частности, нет понятия, что такое data
), единственная причина, по которой может работать следующее:
rooms[data.room] = [];
rooms[data.room] = 1;
Между тем это не так:
rooms[data.room].push(1);
Это data.room
возвращает что-то, что еще не является ключом rooms
.
Попробуйте сделать это rooms[data.room] = 1;
, и тогда console.log(rooms);
скорее всего, вы найдете 6 ключейвместо 5.
Кстати, когда вы устанавливаете ключ / получаете доступ к его значению, вам не нужно конвертировать ваш ключ в строку. Он конвертируется автоматически. Он даже конвертирует объекты (в строку [object Object]
).