2016-08-10 2 views
0

이 문제가되는 데이터 구조입니다 : 내가 EditedArticles.a3.versions의 속성에 액세스 루프 세 가지를 사용하고 현재이 JSON 데이터 구조를 반복하는 더 좋은 방법이 있습니까?

"EditedArticles" : { 
"a3" : { 
    "versions" : [ { 
     "moment" : "a3", 
     "question" : "a3", 
     "situation" : "a3", 
     "version" : 1 
     }, ... 
    ] 
    } 
} 

var getArticlesByMoment = function (moment,situation) { 
      angular.forEach(items, function(article, value) {//items are a1,a2,a3... 
       angular.forEach(article, function(versions, value) {//versions is the array containing version for each article 
        var checkfirst=0; 
        angular.forEach(versions, function(version, value) {//version is the version of an article 
         checkfirst++; 
         if (checkfirst == 1 && version.moment == moment && version.situation == situation) { 
          //do something; 
          return; 
         } 
        }) 
       }) 
      }) 
     } 

나는 내부의 속성에 액세스 할 각 항목 (예 : a3)에 대한 버전 배열을 사용하여 항목이 원하는 순간/상황과 동일한 지 여부를 확인합니다. 물건이 많으면 a1 - a1000, 그러면 시간이 오래 걸릴 것입니다. 각 버전 배열에는 많은 객체가있을 수 있지만 객체의 나머지 부분은 두 속성에 대해 동일한 값을 공유하므로 일치하는 순간과 상황에 대해 첫 번째 객체 만 확인하면됩니다.

이러한 속성에 액세스하는 더 좋고/더 빠른 방법이 있습니까? 나는

당신에게

감사 EditedArticles.json에있는 모든 항목 (. 예를 들어, A3)를 얻기 위해 전화를 GET는 HTTP를 사용하고 당신은 재귀 적 당신의 JSON 개체를 통과하기 위해이 작업을 수행 할 수
+0

이 우리를보기 이 함수를 호출하는 방법 ->'var getArticlesByMoment = function (순간, 상황) {'(모든 관련 코드 게시), (어쩌면 당신은 이미 다른 "열쇠"를 가지고 있기 때문에 쉽게 될 것입니다). – developer033

답변

0

:

function traverse(jsonObj) { 
    if(typeof jsonObj == "object") { 
     $.each(jsonObj, function(k,v) { 
      // object or array 
      traverse(v); 
     }); 
    } 
    else { 
     // actual value 
    } 
} 
+0

글쎄, 당신이 질문을 jQuery 태그가없는 것으로 나타났습니다. – developer033