2016-03-31 16 views
0

ich unter JSON-Array haben, möchte ich dynamisch Array-Namen holen mit Hilfe von JavaScript wie element1, Element2, Item3 usw.wie JSON Array-Name dynamisch in Javascript holen

Wie kommt man diese Werte dynamisch in JavaScript

{ 
    "products": { 
     "Item1": { 
      "name": "iPhone", 
      "price": 450 
     }, 
     "Item2": { 
      "name": "iPad", 
      "price": 450 
     }, 
     "Item3": {}, 
     "Item4": { 
      "name": "iPod", 
      "price": 450 
     }, 
     "Item5": { 
      "name": "MacBook" 
     } 
    } 
} 

Antwort

1

eine for..in Schleife verwenden,

for (var key in obj.products) { 
    console.log(key); 
} 

Working example

+0

Hallo, seine Arbeits aber wenn ich versuche, Namen zu holen key.name mit Ich bin nicht definiert zu bekommen. Wie bekommt man Name und Preiswert? In einigen Fällen ist der Preis nicht zum Beispiel in Item5 und in einigen Fällen sind sowohl Name als auch Preis nicht verfügbar. Wie geht man mit solchen Fällen um? –

+0

Das Problem dort ist, weil 'Schlüssel' nur der String-Name der Eigenschaft ist. Um den "Preis" -Wert von seinem Objektwert zu erhalten, müssen Sie 'obj.products [key] .price' verwenden, zusammen mit einer Logik, um zu prüfen, ob das Objekt tatsächlich existiert; Hier ist ein Beispiel; https://jsfiddle.net/0nLpmakg/1/ –

1

Nehmen Sie Object.keys() für die Schlüssel.

Die Object.keys() Methode gibt ein Array ein eigenen enumerable Eigenschaften des gegebenen Objekts, in der gleichen Größenordnung wie die von einer for...in Schleife vorgesehen (der Unterschied ist, dass eine für die-in Schleifen aufzählt Eigenschaften in der Prototypkette sowie) .

var object = { "products": { "Item1": { "name": "iPhone", "price": 450 }, "Item2": { "name": "iPad", "price": 450 }, "Item3": {}, "Item4": { "name": "iPod", "price": 450 }, "Item5": { "name": "MacBook" } } }; 
 

 
document.write('<pre>' + JSON.stringify(Object.keys(object.products), 0, 4) + '</pre>');