有没有更好的方法来迭代这个JSON数据结构?

时间:2016-08-10 07:53:00

标签: angularjs json nested-loops

这是有问题的数据结构:

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

目前,我使用三个for循环来访问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;
                        }
                    })
                })
            })
        }

我想访问每个项目(例如a3)的versions数组中的属性,以检查项目是否具有与所需项目相同的时刻/情况。如果有很多项目,a1 - a1000,那么我认为这需要很长的运行时间。每个版本数组中可能有许多对象,但我只需要检查第一个对象的匹配时刻和情况,因为其余对象将共享这两个属性的相同值。

是否有更好/更快的方式来访问这些属性?我正在使用http GET调用来获取EditedArticles.json中的所有项目(例如a3)

谢谢

1 个答案:

答案 0 :(得分:0)

你可以这样做来递归地遍历你的json对象:

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