2016-08-24 4 views
5

मैं एक कोणीय नौसिखिया हूं और पोकापी का उपयोग करके प्रत्येक पोकेमोन के लिए विकास श्रृंखला खींचने की कोशिश करके थोड़ा सीख रहा हूं लेकिन गहरे घोंसले के कारण कठिन समय है। हड़पने species.name रूप में अच्छी तरह evolution_details.min_level और evolution_details.trigger.name के रूप में, और evolution_details.itemपोकाएपीआई + कोणीय: पॉकेटमैन विकास श्रृंखला कैसे प्राप्त करें

{ 
    "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 संपत्ति को पाने के लिए है, और:

एक विशिष्ट प्रतिक्रिया वस्तु इस तरह दिया जाता है नहीं करता है, तो अशक्त

लेकिन जैसा कि आप देख सकते हैं, 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); 

मुझे नहीं पता कि वस्तुओं में लगातार गोता लगाने और डेटा को लगातार पकड़ने के लिए, क्या कोई मदद कर सकता है? मैं इसे जटिल जेसन ऑब्जेक्ट्स को पार करने में एक महान सीखने का अवसर के रूप में उपयोग करना पसंद करूंगा।

उत्तर

1

आप हमेशा एंगुलर का उपयोग करने से बच सकते हैं और सादा जेएस के साथ अपनी विकास श्रृंखला बनाने के लिए चिपक सकते हैं ... इसे जाने का प्रयास करें, यह आपके कोणीय पर लूप के आधार पर था। यह आपको उन वस्तुओं के एक सरणी (evoChain) से अवगत कराएगा, जिसमें आप पहले इंडेक्स से पिछले इंडेक्स में पिछले इंडेक्स में अंतिम विकास से ऑर्डर किए गए डेटा को शामिल कर रहे हैं। वाह

[{ 
    "species_name": "charmander", 
    "min_level": 1, 
    "trigger_name": null, 
    "item": null 
}, { 
    "species_name": "charmeleon", 
    "min_level": 16, 
    "trigger_name": "level-up", 
    "item": null 
}, { 
    "species_name": "charizard", 
    "min_level": 36, 
    "trigger_name": "level-up", 
    "item": null 
}] 
+0

यह ठीक काम करता है के रूप में आप ने कहा,:

var evoChain = []; var evoData = response.data.chain; do { var evoDetails = evoData['evolution_details'][0]; evoChain.push({ "species_name": evoData.species.name, "min_level": !evoDetails ? 1 : evoDetails.min_level, "trigger_name": !evoDetails ? null : evoDetails.trigger.name, "item": !evoDetails ? null : evoDetails.item }); evoData = evoData['evolves_to'][0]; } while (!!evoData && evoData.hasOwnProperty('evolves_to')); 

जिसके परिणामस्वरूप सरणी ऊपर अपने नमूना मामले में इस प्रकार दिखाई देनी चाहिए! सीखने के लिए मैं कोशिश करूँगा और इसका अध्ययन करूंगा और देख सकता हूं कि मैं "कोणीय तरीके" जैसा कुछ कर सकता हूं लेकिन यह बहुत अच्छा है! – coderpolarbear

संबंधित मुद्दे