在JSON数据集中的此处,循环仅在第一个宠物小精灵上进行迭代,即仅对Bulbasaur为true。如果您键入其他任何宠物小精灵的名字,则显示“未找到”。如果您输入“ Ivysaur”或其他任何神奇宝贝名称(例如“ Venusaur”),则不会显示。在下面查看我的代码。
let findpokemongame = {https://raw.githubusercontent.com/Biuni/PokemonGO-Pokedex/master/pokedex.json} //click the link to find the JSON dataset
var findname = window.prompt("Enter Pokemon Name")
let checkname = function(findname, findpokemongame) {
for (let thispokemon in findpokemongame.pokemon) {
if (findpokemongame.pokemon[thispokemon].name == findname) {
let pokemondetails = findpokemongame.pokemon[thispokemon];
console.log(pokemondetails);
for (info in pokemondetails) {
if (typeof pokemondetails[info][0] === 'object') {
pokemondetails[info] = pokemondetails[info].map(o => o.name)
}
alert(info + " : " + pokemondetails[info] + "\n")
}
}
else{
alert('Not found');
break;
}
}
}
checkname(findname, findpokemongame)
答案 0 :(得分:2)
您的代码非常嵌套和复杂。就个人而言,我会使用array.find查找神奇宝贝并简化代码。找到它之后,就可以对其进行其他(单独的)操作,并希望所有错误都会变得显而易见:
const foundPokemon = findpokemongame.pokemon.find(pokemon => pokemon.name === findname);
// check foundPokemon
if (foundPokemon) {
// once found extract any details..
} else {
// pokemon name not found
}
您如何处理名称案例?比较它们之前,最好将用户输入名称和json数据宠物小精灵名称都转换为小写(string.toLowerCase())。