我正在尝试编写一个以宠物小精灵的名字作为参数的函数,并在“ next_evolution”字段中找出哪些宠物小精灵都具有该名字
考虑以下JSON数据集-
访问https://raw.githubusercontent.com/Biuni/PokemonGO-Pokedex/master/pokedex.json
现在,我编写了以下函数:
var infoOfPokemon = function(nameOfPokemon,allPokemon){
for(x in allPokemon){
if(allPokemon[x].next_evolution.includes(nameOfPokemon)){
console.log('pokemons found: '+allPokemon[x].name)
} else{
null
}
}
}
var nameOfPokemon =prompt('enter the name of Pokemon')
infoOfPokemon(nameOfPokemon,pokemonData.pokemon)
但是它返回一个错误,说
未捕获的TypeError:无法读取未定义的属性“ includes”的nextEvolution.js:4090
最佳答案
您的一个或多个口袋妖怪没有设置“ next_evolution”字段(例如,文件中ID为3的那个)。因此,allPokemon[x].next_evolution
的值为未定义,因此您无法读取其中的“ includes”。
首先检查next_evolution
是否存在。
if (allPokemon[x].next_evolution &&
allPokemon[x].next_evolution.includes(nameOfPokemon)) { ...