我正在尝试编写一个以宠物小精灵的名字作为参数的函数,并在“ 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)) { ...

09-25 17:33