Как найти значение, хранящееся в массиве объекта и консоли ключ? - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь написать функцию, которая принимает имя покемона в качестве аргумента, и выяснить, у какого покемона есть это имя в поле «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 &&
      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)

моя функция не возвращает имя покемона, имя которого есть в поле next_evolution.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

В вашем объекте JSON объект next_evolution является массивом объектов, и он не заполняется всегда.

Вы работали непосредственно с полем next_evolution, рассматривая его как массив строк, следовательно, ваше включение не сработало.

Ниже код утомителен, но дает объяснение вашей неправильной итерации

var infoOfPokemon = function(nameOfPokemon, allPokemon) {
    for (index in allPokemon) {
        var nextEvolutionObject=allPokemon[index].next_evolution;
      if (nextEvolutionObject){
          for(evolutionIndex in nextEvolutionObject){
              if(nextEvolutionObject[evolutionIndex].name===nameOfPokemon){
                  console.log("Pokemon found :"+nameOfPokemon);
              }
          }

      }
    }
  }
  var nameOfPokemon = prompt('enter the name of Pokemon');
  infoOfPokemon(nameOfPokemon, pokemonData.pokemon)
0 голосов
/ 08 мая 2018

Вам следует рассмотреть возможность использования some и filter. Это облегчит вам задачу

pokemonData.pokemon.filter(o=> o.next_evolution.some(e=> e.name === nameOfPokemon))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...