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这样的东西来实现,但我真的很想用纯粹的香草来做。
答案 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
循环数组被认为是不好的做法,为了这个问题的目的,这不是重要的事情。