2017-08-31 4 views
1

ich in Javascript bin neu (und jquery), und ich möchte ein api wie folgt nennen:Call a JSON API reagiert mit jQuery

{"GOOGL":{"PRICE":950.123},"TSLA":{"PRICE":345.67}} 

ich mit meinem Code versucht, aber es hat nicht funktioniert:

var list = ["GOOGL","TSLA"]; 


$(document).ready(function() { 
    $.getJSON('api.json', function(data) { 
     for (var i in list) { 
       console.log(data.list[i].PRICE); 
     }; 
    }); 
}); 

bekam ich einen Fehler wie folgt aus: „nicht abgefangene Typeerror: lesen Eigenschaft kann nicht‚0‘von undefined“

Kann mir jemand helfen?

+1

' Daten [Liste [i]]. PREIS ". – nnnnnn

+0

Es bedeutet, dass "data.list" nicht definiert ist, versuchen Sie zu überprüfen, was der Inhalt von 'data' ist durch' console.log (data) ' – masterpreenz

+0

@nnnnnn in der Liste var gibt es keinen Preis' var list = ["GOOGL" , "TSLA"]; "OP ist nicht sehr klar, er hat' {"GOOGL": {"PRICE": 950.123}, "TSLA": {"PRICE": 345.67}} aber in der Schleife benutzt er 'list ' – guradio

Antwort

0

Wie @nnnnnn in den Kommentaren erwähnt, könnten Sie tun:

console.log(data[list[i]].PRICE); 

zu erklären:

list[i] den Wert in list im Index gespeichert zurückkehren i (wie GOOGL und TSLA).

Die in data gespeicherten Werte ({"GOOGL":{"PRICE":950.123},"TSLA":{"PRICE":345.67}}) scheinen die Werte von list[i] (GOOGL und TSLA) als Schlüssel zu verwenden.

Dies bedeutet, dass data["GOOGL"] (mit data[list[i]]) Sie {"PRICE":950.123} erhalten wird.

Dann nehmen Sie einen anderen Schritt data["GOOGL"].PRICE (mit data[list[i]].PRICE) erhalten Sie 950.123.

Wohingegen console.log(data.list[i].PRICE); nicht funktioniert, weil es die list Eigenschaft sucht (die nicht existiert) in dem data Objekt.

In diesem Fall werden Sie Uncaught TypeError: Cannot read property '0' of undefined sehen, wenn i Null, da data.list kehrt nicht definiert ist (und der Code versucht Eigenschaft 0 von ihm zu bekommen).

0
for (var i in list) { 
    console.log(data[list[i]].PRICE); 
}; 

Es ist nicht möglich, Variablennamen zu verwenden, um die Eigenschaften eines Objekts unter Verwendung von Punkt-Operator zuzugreifen.

So musst du die Array-Notation verwenden ..

0

@ Kevin: Sie können keine Objektschlüssel mit Punkt-Operator für die Zugriff Sie diesen Schlüssel in der Hash passieren müssen wie „Daten [list [i]] .PRICE "