2016-08-10 9 views
0

これは、問題のデータ構造です:このJSONデータ構造を反復処理するための良い方法はありますか?

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

現在、私は内部のプロパティにアクセスしたいEditedArticles.a3.versions

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; 
         } 
        }) 
       }) 
      }) 
     } 

のプロパティにアクセスするには、ループのための3つを使用していますアイテムが所望のものと同じ瞬間/状況を有するかどうかをチェックするために、各アイテム(例えば、a3)のためのバージョンアレイ。 a1 - a1000のアイテムがたくさんある場合、これは長い実行時間がかかると思います。各バージョンの配列には多くのオブジェクトがあるかもしれませんが、残りのオブジェクトがこれらの2つのプロパティに対して同じ値を共有するため、最初のオブジェクトを照合する必要があります。

これらのプロパティにアクセスする方法はありますか?私は

はあなたに

ありがとうEditedArticles.json内のすべての項目(。例えばa3)を取得するために呼び出す、HTTP GETを使用しています あなたはrecursivlyあなたのJSONオブジェクトを横断するこれを行うことができます
+0

が私たちを表示しますどのようにこの 'function'を' 'var getArticlesByMoment = function(瞬間、状況)' 'と呼んでいるのでしょうか(関連するすべてのコードを投稿しています)、(おそらくあなたはすでに他の" keys "を持っていますので、 )。 – 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

関連する問題