更好的直接访问JSON子对象的方法

时间:2014-05-05 21:37:48

标签: javascript arrays json loops object

我有一个相当大的JSON响应结构与此类似:

{
    "parent": [
        {
            "id": 1000,
            "name": "Example",
            "child": [
                {
                    "id": 2000,
                    "name": "Example"
                }
            ]
        }
    ]
}

我需要访问child的数据,我知道parentchild's id。看起来像过度杀戮一样。理想情况下,我可以访问数据 ,如

parent[id:1000].child[id:2000];

如何在不循环遍历所有父对象和子对象的情况下访问子对象?

此外,我设计了这个JSON对象,并欢迎任何建议,根据我想要实现的目标来改进它的结构。

我所拥有的最接近的解决方案如下,但似乎是不好的形式:

{
    1000: [
        {
            "name": "Parent",
            2000: [
                {
                    "name": "Child"
                }
            ]
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

过滤器可以是:

parent.filter(function(item) {
    return item.id == 1000
})[0].child.filter(function(item) {
    return item.id == 2000
})[0]

您还可以定义一个按ID过滤的功能:

byId = function(id) { return function(item) { return item.id == id} }

然后

parent.filter(byId(1000))[0].child.filter(byId(2000))[0];

您还可以定义更通用的过滤功能:

by = function(key, value) { return function(item) { return item[key] == value} }

parent.filter(by('id', 1000))[0].child.filter(by('id', 2000))[0];