Jestem początkującym początkującym i trochę się uczę, próbując przeciągnąć łańcuch ewolucji dla każdego pokemona za pomocą pokeapi, ale mając trudny czas z powodu głębokiego zagnieżdżenia.PokeAPI + Angular: Jak uzyskać ewolucyjny łańcuch pokemonów?
Typowa reakcja obiekt jest zwracany tak:
{
"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"
}
}
}
muszę dostać się do evolves_to własności i grab species.name jak evolution_details.min_level i evolution_details.trigger.name i evolution_details.item jeśli nie zerowy
Ale jak widać, właściwość evolves_to sama zawiera inny evolves_to zagnieżdżony wewnątrz, która ma inny zagnieżdżony wewnątrz
to moja smutna próba (po http.get) i jestem po prostu zatrzymany teraz.
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);
Nie wiem, jak rekurencyjnie nurkować w obiektach i stale pobierać dane, czy ktoś może udzielić jakiejkolwiek pomocy? Chciałbym użyć tego jako wspaniałej możliwości uczenia się podczas przechodzenia przez złożone obiekty JSON.
Działa to dokładnie tak, jak pan powiedział, wow! W trosce o naukę postaram się zbadać to i zobaczyć, czy mogę zrobić coś podobnego "kanciastą drogą", ale to jest wielkie dzięki! – coderpolarbear