Я - Угловой новичок, и немногому учусь, пытаясь вытащить цепочку эволюции для каждого покемона, используя pokeapi, но имея трудное время из-за глубокого гнездования.PokeAPI + Angular: Как получить эволюционную цепочку покемонов
Типичный объект возвращается ответ, как это:
{
"baby_trigger_item": null,
"id": 2,
"chain": {
"evolution_details": [],
"evolves_to": [
{
"evolution_details": [
{
"min_level": 16,
"min_beauty": null,
"time_of_day": "",
"gender": null,
"relative_physical_stats": null,
"needs_overworld_rain": false,
"turn_upside_down": false,
"item": null,
"trigger": {
"url": "http://pokeapi.co/api/v2/evolution-trigger/1/",
"name": "level-up"
},
"known_move_type": null,
"min_affection": null,
"party_type": null,
"trade_species": null,
"party_species": null,
"min_happiness": null,
"held_item": null,
"known_move": null,
"location": null
}
],
"evolves_to": [
{
"evolution_details": [
{
"min_level": 36,
"min_beauty": null,
"time_of_day": "",
"gender": null,
"relative_physical_stats": null,
"needs_overworld_rain": false,
"turn_upside_down": false,
"item": null,
"trigger": {
"url": "http://pokeapi.co/api/v2/evolution-trigger/1/",
"name": "level-up"
},
"known_move_type": null,
"min_affection": null,
"party_type": null,
"trade_species": null,
"party_species": null,
"min_happiness": null,
"held_item": null,
"known_move": null,
"location": null
}
],
"evolves_to": [],
"is_baby": false,
"species": {
"url": "http://pokeapi.co/api/v2/pokemon-species/6/",
"name": "charizard"
}
}
],
"is_baby": false,
"species": {
"url": "http://pokeapi.co/api/v2/pokemon-species/5/",
"name": "charmeleon"
}
}
],
"is_baby": false,
"species": {
"url": "http://pokeapi.co/api/v2/pokemon-species/4/",
"name": "charmander"
}
}
}
Я должен добраться до evolves_to собственности, и захватить species.name, а также evolution_details.min_level и evolution_details.trigger.name и evolution_details.item если не нулевой
Но, как вы можете видеть, evolves_to свойство, само по себе содержит еще evolves_to вложен внутри, который другой вложенной внутрь
Это моя печальная попытка (после http.get), и я просто застрял Теперь.
var evoObject = response.data;
function loopEvo(obj){
angular.forEach(obj, function(value, key, object){
if (key == 'evolves_to' && value != []) {
//from here I can get top level data, but...
}
});
}
loopEvo(evoObject.chain);
Я не знаю, как рекурсивно погружаться в объекты и постоянно захватывать данные, может ли кто-нибудь помочь? Я хотел бы использовать это как отличную возможность обучения в обходе сложных объектов json.
Это работает точно так же, как вы сказали, ничего себе! Для обучения я попытаюсь изучить это и посмотреть, смогу ли я сделать что-то подобное «угловым способом», но это большое спасибо! – coderpolarbear