2016-07-07 2 views
0

다음 응답의 값을 얻어야합니다. 내가 값 "Network problem"이있는 경우JavaScript의 응답에서 다른 데이터 분리

var response = { "data": [ 

    { 
     "value": "Network problem", 
     "text": "Network problem", 
     "areas": [ 
     { 
      "value": "Congestion", 
      "text": "Congestion", 
      "sub_areas": [ 
      { 
       "value": "Congestion_1", 
       "text": "Congestion_1", 
       "id":"1" 
      }, 
      { 
       "value": "Call D", 
       "text": "Call D", 
       "id":"2" 
      }] 
     }, 
     { 
      "value": "Drop", 
      "text": "Drop", 
      "sub_areas": [ 
      { 
       "value": "Drop_1", 
       "text": "Drop_1", 
       "id":"3" 
      }] 
     } 
     ]}; 

, 그럼 나는 그것의 영역 (ex: areas = ["Congestion","Drop"])를 검색 할 수 있습니다. 그런 다음 지역 값을 사용하여 하위 영역을 다시 찾아야합니다. 면적 값이 "congestion"이면 sub_areas =["congestion_1", "Call D"]). 어떻게해야합니까?

+0

이 json 객체를 '평평하게'놓아야 만 원하는 '값'을 얻을 수 있습니다. – Venky

+0

@Venky 예를 들어 – madhev

+1

http://stackoverflow.com/questions/6890969/how-to-navigate-in-nested-json – Venky

답변

1

Venky가 제안한 것처럼 밑줄과 같은 라이브러리를 사용하는 것이 가장 좋은 방법 일 것입니다.

네이티브 JS 솔루션에 대해 궁금한 점이 있으면 아래에 설명해 드리겠습니다.

var node, root = {}; 

response.data.forEach(function(data) { 
    node = root[data.value] = {}; 

    data.areas.forEach(function(area) { 
    node[area.value] = []; 

    area.sub_areas.forEach(function(subArea) { 
     node[area.value].push(subArea.value); 
    }); 
    }); 
}); 

예 출력 # 1 : '데이터'값 목록 :

console.log(Object.keys(root)); 
["Network problem"] 
당신의 구조가 imbrication의 많은 수준을 가지고 있지 않기 때문에

, 당신은 간단한 방법 등을 사용하여 고려할 수

출력 예 2 :

console.log(Object.keys(root['Network problem'])); 
["Congestion", "Drop"] 

출력 예 # 3 : "네트워크 문제 '를위한 영역 목록 : 리프 노드는 배열하는 동안 루트 노드과 그 아이들이 오브젝트 것을

console.log(root['Network problem']['Congestion']); 
["Congestion_1", "Call D"] 

참고 : '네트워크 문제'/ '정체'에 대한 하위 영역의 목록입니다. 따라서 마지막 예제의 구문이 다릅니다.

부록 아래

내가 고정 된 포맷으로 사용되는 응답 객체입니다.

var response = { 
    "data": [ 
    { 
     "value": "Network problem", 
     "text": "Network problem", 
     "areas": [ 
     { 
      "value": "Congestion", 
      "text": "Congestion", 
      "sub_areas": [ 
      { 
       "value": "Congestion_1", 
       "text": "Congestion_1", 
       "id":"1" 
      }, 
      { 
       "value": "Call D", 
       "text": "Call D", 
       "id":"2" 
      } 
      ] 
     }, 
     { 
      "value": "Drop", 
      "text": "Drop", 
      "sub_areas": [ 
      { 
       "value": "Drop_1", 
       "text": "Drop_1", 
       "id":"3" 
      } 
      ] 
     } 
     ] 
    } 
    ] 
};