javascript - 循环并未对所有 JSON 数据集进行迭代

标签 javascript json

在 JSON 数据集中,循环仅在第一个神奇宝贝上进行迭代,即仅适用于妙蛙种子。如果您输入任何其他神奇宝贝的名称,它会显示“未找到”。如果您输入“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)

最佳答案

您的代码非常嵌套且复杂。就我个人而言,我会使用 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 数据 Pokemon 名称都转换为小写 ( string.toLowerCase() )。

关于javascript - 循环并未对所有 JSON 数据集进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55318102/

相关文章:

javascript - 当用户不活跃时,如何使 PHP session 过期

javascript - 使用多个数字访问javascript : whoy does this work this way?中的数组元素

javascript - 为什么 'in' 运算符会抛出字符串错误而不是记录 false?

python - 如何使 json-schema 允许一个字段而不是另一个字段?

c# - 为什么我不能在 C# 中引用 System.Runtime.Serialization.Json

javascript - 为什么 Vue Router (0.7.13) 不匹配子路由?

JavaScript 加法运算符不起作用

javascript - 使用 Javascript 删除 sharepoint 2010 上的快速启动节点

c# - 在 JSON 中用冒号解析字段名称

java - 如何使用 Spring Boot Rest Java EE 项目正确管理文件写入?