0

The goal is to list users in rooms, so a room can contain many users and should be easily retrieved:

ex:

user1 = {"username":"john","sex":"male"};
user2 = {"username":"robert","sex":"male"};
user3 = {"username":"isac","sex":"male"};

rooms["room1"].push(user1);
rooms["room1"].push(user2);
rooms["room2"].push(user3);

and then

return rooms["room1"];

should return

{"username":"john","sex":"male"};
{"username":"robert","sex":"male"};

of course rooms[roomName].push(user2); is not good

Any idea on how to achieve that ?

4

1 回答 1

3
var roomsMap = {
    room1: [],
    room2: [],
    room3: []
};

roomsMap.room1.push(user1);

或者如果您需要动态密钥:

roomsMap[roomKey].push(someUser);

编辑:

几乎不错。但是如何使 roomMap 也动态化,并且不限于 room1, room2, room3 呢?

您可以通过这种方式将新的键/数组动态添加到roomsMap.

(roomsMap[roomKey] = roomsMap[roomKey] || []).push(user1);

完整示例:

var roomsMap = {},
    user1 = {"username":"john","sex":"male"},
    roomKey = 'room1';

(roomsMap[roomKey] = roomsMap[roomKey] || []).push(user1);

console.log(roomsMap[roomKey]); //[Object { username="john", sex="male"}]
于 2013-09-13T14:57:04.550 回答