循环遍历仅以特定模式开头的JSON对象

时间:2014-06-02 15:38:23

标签: javascript jquery json jquery-selectors

循环通过仅以某种模式开头的JSON对象的正确/惯用方法是什么?

示例:说我有像

这样的JSON
{
  "END": true, 
  "Lines": "End Reached", 
  "term0": {
    "PrincipalTranslations": {
      // nested data here
    }
  },
  "term1": {
    "PrincipalTranslations": {
      // more nested data here
    }
  }
}

我只想访问PrincipalTranslations对象,我尝试使用:

$.each(translations, function(term, value) {
    $.each(term, function(pos, value) {
        console.log(pos);
    });
});

哪个不起作用,可能是因为我无法遍历ENDLines个对象。

我试着用类似

的东西
$.each(translations, function(term, value) {
    $.each(TERM-THAT-STARTS-WITH-PATTERN, function(pos, value) {
        console.log(pos);
    });
});

使用wildcards,但没有成功。我可以尝试搞砸if语句,但我怀疑有一个更好的解决方案,我错过了。感谢。

2 个答案:

答案 0 :(得分:3)

如果您只对PrincipalTranslations - 对象感兴趣,请按照以下方法操作:

$.each(translations, function(term, value) {
    if (value.PrincipalTranslations !== undefined) {
        console.log(value.PrincipalTranslations);
    }
});

JSFiddle

答案 1 :(得分:1)

如何在对象中搜索属性,如下所示:

var obj1 ={ /* your posted object*/};


// navigates through all properties
var x = Object.keys(obj1).reduce(function(arr,prop){
// filter only those that are objects and has a property named "PrincipalTranslations"
    if(typeof obj1[prop]==="object" &&  Object.keys(obj1[prop])
        .filter(
            function (p) {
                return p === "PrincipalTranslations";})) {
                     arr.push(obj1[prop]);
                }
    return arr;
},[]);

console.log(x);