JSON打印对象递归值

时间:2016-05-13 11:49:33

标签: json recursion

我正在尝试使用JSON构建一个树,我试图在浏览器控制台中进行打印。

var json = [{
  name: "1",
  id: 1,
  child: [{
    name: "11",
    id: 11,
    child: [{
      name: "111",
      id: 111
    }, {
      name: "112",
      id: 112
    }]
  }, {
    name: "12",
    id: 12
  }]
}];

function ya(obj) {
  console.log(obj.name);
  if (obj.child) {
    console.log("length=" + obj.child.length);
    for (i = 0; i < obj.child.length; i++) {
      ya(obj.child[i]);
    }
  }
}
ya(JSON.parse(JSON.stringify(json))[0]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我想在这里打印

  

1
  11个
  111个
  112个
  12

在控制台中。但它只打印

  

1
  11个
  111个
  112

我想以递归方式执行此操作。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您需要使用i声明var

for (var i = 0; i < obj.child.length; i++)

有关详细信息,请参阅Difference between variable declaration syntaxes in Javascript (including global variables)?