2016-03-31 1 views
0

Я ниже JSON массива, я хочу, чтобы извлечь имя массива динамически, используя JavaScript, как ITEM1 ст.2, Item3 и т.д.как принести JSON имя массива динамически в Javascript

Как получить эти значения динамически в JavaScript

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

ответ

1

Используйте for..in петлю,

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

Working example

+0

Привет, Его рабочий, но если я пытаюсь извлечь имя с помощью key.name я получаю не определено. Как получить имя и цену. В некоторых случаях цена отсутствует, например, в Item5, и в некоторых случаях оба названия и цена недоступны. Как обращаться с такими случаями? –

+0

Проблема в том, что 'key' - это просто имя строки свойства. Чтобы получить значение 'price' от его значения объекта, вам нужно использовать' obj.products [key] .price', а также некоторую логику, чтобы проверить, действительно ли этот объект существует; вот пример; https://jsfiddle.net/0nLpmakg/1/ –

1

Возьмите Object.keys() для получения ключей.

Метод Object.keys() возвращает массив собственных перечислимых свойств данного объекта, в том же порядке, как это предусмотрено в for...in петле (с той разницей, что для в цикле перебирает свойства в цепочке прототипов, а) ,

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>');

Смежные вопросы