我有一个相当大的JSON响应结构与此类似:
{
"parent": [
{
"id": 1000,
"name": "Example",
"child": [
{
"id": 2000,
"name": "Example"
}
]
}
]
}
我需要访问child
的数据,我知道parent
和child's
id
。看起来像过度杀戮一样。理想情况下,我可以访问数据 ,如 :
parent[id:1000].child[id:2000];
如何在不循环遍历所有父对象和子对象的情况下访问子对象?
此外,我设计了这个JSON对象,并欢迎任何建议,根据我想要实现的目标来改进它的结构。
我所拥有的最接近的解决方案如下,但似乎是不好的形式:
{
1000: [
{
"name": "Parent",
2000: [
{
"name": "Child"
}
]
}
]
}
答案 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];