[英]Going through arrays in object with a loop
我在对象内部有几个不同的数组。 我想使用数字值浏览它们,因为我需要将它们循环设置为手风琴中的不同插槽。 我得到的Json文件的值看起来像这样(例如,使用Pokemon):
{
"Pokemon": {
"FirePokemon": [
{
"name": "Vulpix",
"speed": "10",
"attack": "10",
"defence": "10"
},
{
"name": "Charmander",
"speed": "10",
"attack": "10",
"defence": "10"
}
],
"WaterPokemon": [
{
"name": "Squirtle",
"speed": "10",
"attack": "10",
"defence": "10"
},
{
"name": "Wartortle",
"speed": "10",
"attack": "10",
"defence": "10"
}
],
"GrassPokemon": [
{
"name": "Bulbasaur",
"speed": "10",
"attack": "10",
"defence": "10"
},
{
"name": "Oddish",
"speed": "10",
"attack": "10",
"defence": "10"
}
]
}
}
我想这样称呼数据:
function SetJsonDataToAccordion() {
for (var i = 0; i < Object.keys(pokemondata).length; i++) {
CreateAccordionContent(pokemondata[i], ".accordtitle"+i);
}
}
pokemondata是获取所有Json数据的变量。 当然,pokemondata [i]不起作用,但是我想在循环中循环调用pokemon类型,例如在不调用数组名称的情况下在循环中依次交换火,水,草等。 如果我只是将其设置为pokemondata.FirePokemon,那么一切都可以,但是我需要循环通过它们。 那么有没有一种方法可以循环遍历对象中的数组?
您可以使用for
/ in
循环。
根据您的示例:您需要3个嵌套循环。
var obj = { "Pokemon": { "FirePokemon": [{ "name": "Vulpix", "speed": "10", "attack": "10", "defence": "10" }, { "name": "Charmander", "speed": "10", "attack": "10", "defence": "10" } ], "WaterPokemon": [{ "name": "Squirtle", "speed": "10", "attack": "10", "defence": "10" }, { "name": "Wartortle", "speed": "10", "attack": "10", "defence": "10" } ], "GrassPokemon": [{ "name": "Bulbasaur", "speed": "10", "attack": "10", "defence": "10" }, { "name": "Oddish", "speed": "10", "attack": "10", "defence": "10" } ] } }; for (var key1 in obj.Pokemon) { console.log("======================="); console.log(key1); console.log("======================="); for (var key2 in obj.Pokemon[key1]) { for (var key3 in obj.Pokemon[key1][key2]) { console.log(key3 + ": " + obj.Pokemon[key1][key2][key3]); } console.log("****"); } }
遍历两者。 使用Object.keys,您可以获取宠物小精灵类型的列表,并可以通过这些信息遍历每个宠物小精灵。
var pokemonData = obj.Pokemon;
Object.keys(pokemonData).forEach(type => {
// do something with pokemon type
pokemonData[type].forEach(pokemon => {
//do something with actual pokomen
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.