JS:解析JSON时嵌套for循环

时间:2015-07-31 16:16:56

标签: javascript json loops for-loop

for (kind in animals) {
  content += animals[kind][0].name + '<br>';
}

这将从我的JSON中返回每种动物类型的名字。我很难获得所有名字,而不仅仅是[0]。由于似乎没有像[*]这样的简单通配符,我尝试在第一个中放入第二个for循环,如下所示:

for (var kind in animals) {
  for (var i in kind) {
    content += animals[kind][i].name + '<br>';
  }
}

但是应该如此,那根本不起作用。

我知道这很容易通过像Underscore.JS这样的东西来实现,但我真的很想用纯粹的香草来做。

2 个答案:

答案 0 :(得分:2)

AFAIU animals[kind]是一个数组。 在这种情况下,您可以使用forEach而不是嵌套循环(代码中的错误)。

for (var kind in animals) {
  animals[kind].forEach(function(v) {
    content += v.name + '<br>';
  });
}

答案 1 :(得分:0)

当您在content +=行中引用该名称时,您正确使用animals[kind],但您还需要将其指定为要循环的内容。 kind只是属性,你要循环的是animals[kind]所持的数组:

for (var kind in animals) {
  for (var i in animals[kind]) {
                ^^^^^^^^^^^^^
    content += animals[kind][i].name + '<br>';
  }
}

使用for...in循环数组被认为是不好的做法,为了这个问题的目的,这不是重要的事情。