如果通过遍历获取json中嵌套的对象的值?

我想通过for in 获取json中嵌套的对象的属性值,可是返回的却是undefined,代码如下:
这是json代码:

var recentUpdates = [
    {
        "...":"...",
        "tags":{
          "tag1":"html",
          "tag2":"移动开发"
        }
    }]
   

这是JavaScript代码:

 <script type="text/javascript">
  var a = recentUpdates[0].tags;
  var b;
  for (var b in a){
     console.log(a.b);//返回undefined
     console.log(a.tag1);//返回html;
  }
  </script>

请问为什么console.log(a.b)会返回undefined呢?那么应该如何通过属性名获取对应的值呢?

阅读 6.5k
3 个回答

console.log(a[b]); //a.b 对象a的属性b而不是b的值

你的a.b表示的是a里面的b这个项,而不是a[b]。。。
你换成下面这样,应该能得到正确结果
var recentUpdates = [{

    "...":"...",
    "tags":{
      "tag1":"html",
      "tag2":"移动开发"
    }
}];

var a = recentUpdates[0].tags;
var b;

for (b in a){

 console.log(a[b]);//返回正确的结果
 console.log(a.tag1);//返回html;

}

你这个b要在这个js对象里面,有这个属性,没有肯定是undefined!这个方法虽然好用,不用管json里面的结构。但是for in会查找原型链。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题