使用唯一名称管理集合的最佳方法是什么?我选择了对象,这是一个描述我的问题的示例对象:
var examplerooms = {
lobby: {
users: {
id4346334: {
n: "hello",
ip: "192.168.0.1"
},
id12345: {
n: "another",
ip: "192.168.0.1"
},
id78978: {
n: "user",
ip: "192.168.0.1"
}
}
},
another: {
users: {
id23356: {
n: "hello",
ip: "192.168.0.1"
},
id3400: {
n: "sad",
ip: "192.168.0.1"
},
id777777: {
n: "one",
ip: "192.168.0.1"
}
}
}
}
通过这种方式添加和删除特定元素非常容易。但是,我需要列出某些东西,或者有时比较某些东西。我找不到顺畅的查询解决方案,例如: “所有用户名为”hello“的用户,或者”hello“作为用户名(n)出现?”
我可以用Object.keys做原始的东西,但它不灵活。
我已经检查了javascript集合,并且我也阅读了有关对象的内容。然而,我脑子里的一切仍然非常模糊。
任何澄清都表示赞赏。
答案 0 :(得分:-1)
将数据转换为数组,因此您将看到:
var examplerooms = {
lobby: {
users: [
{
id: 4346334,
n: "hello",
ip: "192.168.0.1"
},
{
id: 12345,
n: "another",
ip: "192.168.0.1"
},
{
id: 78978.
n: "user",
ip: "192.168.0.1"
}
]
}
};
所以你可以随心所欲地做所有事情:
var users = examplerooms.lobby.users;
for(var i = 0; i < users.length; i++){
if(users[i].n.indexOf('hello') !== -1){
console.log(users[i]);
}
}