如何在JS对象中管理数据?

时间:2014-11-24 09:33:05

标签: javascript javascript-objects

使用唯一名称管理集合的最佳方法是什么?我选择了对象,这是一个描述我的问题的示例对象:

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集合,并且我也阅读了有关对象的内容。然而,我脑子里的一切仍然非常模糊。

任何澄清都表示赞赏。

1 个答案:

答案 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]);
    }
}