遍历JSON对象,只有具有一定的模式启动(Loop through JSON objects tha

2019-10-30 11:44发布

什么是正确的/惯用的方式通过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);
    });
});

使用通配符 ,但没有成功。 我可以尝试乱用if语句,但我怀疑有一个更好的解决办法,我错过了。 谢谢。

Answer 1:

如果你只在感兴趣PrincipalTranslations -objects,下面会做的伎俩:

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

的jsfiddle



Answer 2:

我怎么会寻找一个对象是这样的属性:

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


文章来源: Loop through JSON objects that only start with a certain pattern