2016-04-11 16 views
0

Bir öğrenci projesi için NASA Near Earth Object dizisini kullanıyorum ve örneğin bir anahtar için bir tarih ve tire işareti olan iç içe geçmiş nesnelere erişme konusunda sorun yaşıyorum.Numaraları ve kısa çizgilerle Javascript Object anahtarına erişme

2016-09-08 : [...] 

Geri döndüğüm hata sadece 'tanımlanmamış'.

Ben API çağrıdır:

$(document).ready(function NASAtest() { 
    $.ajax({ 
     type: "GET", 
     url: "https://api.nasa.gov/neo/rest/v1/feed?start_date=2016-09-07&end_date=2016-09-08&api_key=DEMO_KEY", 
     asynch: false, 
     contentType: "application/javascript", 
     dataType: "json",  
     success: function(data) { 
      console.log(data) 
      var recordList = data.near_earth_objects; 
      console.log(recordList); 
      var recordList2 = data.near_earth_objects[2016-09-08]; 
      console.log(recordList2); 

      }  
    }); 
}); 

Numune API veriler:

{ 
    "near_earth_objects": { 
     "2016-09-08": [ 
      { 
       "neo_reference_id": "3726710", 
       "name": "(2015 RC)", 
       "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=3726710", 
       "absolute_magnitude_h": 24.3, 
       "is_potentially_hazardous_asteroid": false, 
      } ] } } 

bakınız keman:

ve JSON https://jsfiddle.net/lollyborch/v640ocfr/ veriler: https://api.nasa.gov/neo/rest/v1/feed?start_date=2016-09-07&end_date=2016-09-08&api_key=DEMO_KEY

Sonunda ediyorum th için aşağı tüm tarih bilgileri yineleme gibi Bir tarih aralığı için "absolute_magnitude_h" ve "is_potentially_hazardous_asteroid" gibi tuşlar, ancak bu aşamada sadece tarih anahtarını geçmekte sorun yaşıyorum. here ve here açıklandığı gibi nokta gösterimi yerine köşeli parantez kullanmayı denedim, ancak yanlış yaptığımı göremiyorum.

Doğru yönde herhangi bir fikir çok takdir edilecektir.

+3

istediniz:: Aşağıdaki konsolunda 210 'data.near_earth_objects [ "2015/09/08"]'? – Paul

+0

Ayrıca, 201 ** 6 ** için veri aldığınızı, ancak 201 ** 5 ** tarihinde bir tarih için veri almayı denediğinizi unutmayın. Bu nedenle, sizden data.near_earth_objects istediğinizi tahmin ediyorum ["2016-09- 08" ] '. Sadece başınızı hala "tanımlanmamış" hatayla sarmanız durumunda. Bakınız https://jsfiddle.net/v640ocfr/1/ – Paul

+0

Teşekkürler @Paul. Kendimi kestirdim, bu bir yazım hatasıydı. Bu gece güncellemeyi hatırlamadığım kadar çok varyasyon denedim. – LollyBee

cevap

3

Özellik adı 2015-09-08, ancak, anahtar 1998 (2015 - 9 - 8) erişiyorsunuz. Eğer söz konusu Nokta gösterimini söz beri, bu, bir yan not olarak

data.near_earth_objects["2015-09-08"] 

: Sen aksi takdirde ifadesini değerlendirmek ve mülkiyet adı olarak bunun sonucunu kullanacak, tırnak içinde kaydırmak gerekiyor eşdeğer özellik adı nokta notasyonunda çalışmadığından, nokta gösterimi yerine köşeli ayraç notasyonu kullanmanız gereken bir durumdur.


bu rotanın altındaki hareket ettikçe, muhtemelen sorunu çeşit kendini giderir bu noktada oldukça kodlanmış adlarını kullanmak yerine nesnenin içeriğine yineleme bitireceğiz, söyledikten:

for (var neo in data.near_earth_objects) { 
    //neo is now, for instance, "2016-09-07" 
    console.log(neo, data.near_earth_objects[neo]) 
} 
+0

Teşekkürler.Tırnak eklenmesi ve yazım hatası (2016 vs 2015) birleştirilmesi birlikte çalıştı. Haklısınız - her iki problemi de çözecek bir döngünün bir sonraki adımına gitmeliydim. – LollyBee

0

parantez notasyonu kullanırken, erişmeye çalıştığınız tuşunun çevresindeki tırnak kullanmayı düşünün isteyebilirsiniz:

var recordList2 = data.near_earth_objects['2016-09-08']; 

sencan Eğer tırnak deneyin

enter image description here

İlgili konular