2017-01-12 1 views
0

을 다차원 개체에 액세스 할 때 와일드 카드를 사용 : 나는 이러한 중첩 된 개체에 액세스하는 방법과 사투를 벌인거야이 같은 포맷 된 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 속성에 액세스 할 수 있습니다. 그러나 :

  • 두 번째 번호가 매겨진 개체 ("21168")는 항상 일관되게 번호가 매겨지지 않습니다.
  • 두 번째 번호 매기기 개체는 항상 유일한 중첩 개체입니다.

와일드 카드 같은 것을 사용하여 동일한 party 속성에 액세스 할 수있는 방법이 있습니까? 이상적으로는 feature.properties.member[112][*].party과 비슷한 것입니다. 두 번째 숫자는 유일한 중첩 된 객체 인 경우

답변

2

, 당신은 번호가 내장 Object.keys(obj)를 사용하여 손쉽게 찾을 수 있습니다, 같은 :

var obj = feature.properties.member[112], 
    key = Object.keys(obj)[0] 
    party = obj[key].party 

슬프게도 속성 액세스에 대한 와일드 카드가없는,하지만 당신은 무엇을 찾을 수 있습니다 속성 이름은 상당히 간단합니다.

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"); 
관련 문제