我正在使用格式如下的GeoJSON数据集:
{
"type": "Feature",
"properties": {
"startcong": "109",
"district": "7",
"statename": "Pennsylvania",
"member": {
"112": {
"21168": {
"party": "Republican",
"name": "Meehan, Pat",
"district": "7"
}
},
"109": {
"15447": {
"party": "Republican",
"name": "Weldon, Curt", "district": "7"}
},
"110": {
"20744": {
"party": "Democrat",
"name": "Sestak, Joe",
"district": "7"
}
},
"111": {
"20744": {
"party": "Democrat",
"name": "Sestak, Joe",
"district": "7"
}
}
},
"endcong":
"112",
"id": "042109112007"
}
}
我正在努力解决如何访问这些嵌套对象的问题。例如,我可以使用feature.properties.member[112][21168]
来访问party
属性。但是:
是否有办法使用通配符等方式访问相同的party
属性?理想情况下,类似于feature.properties.member[112][*].party
。
答案 0 :(得分:3)
如果第二个数字是唯一的嵌套对象,您可以找到使用内置Object.keys(obj)
的数字,例如:
var obj = feature.properties.member[112],
key = Object.keys(obj)[0],
party = obj[key].party
可悲的是,没有用于访问属性的通配符,但是您可以非常简单地找到属性名称。
答案 1 :(得分:0)
你想找?
Function find(obj,word){
if(obj[word]){
return obj[word];
}
for(key in obj){
if(typeof obj[key]=="Object"){
var result=find(obj[key],word);
if(result){
return result;
}
}
}
return false;
}
像这样使用:
party=find(json,"party");