2014-12-12 4 views
0

Я загрузил некоторый JSON, который я преобразовал в объект. Теперь мне нужно найти глубину второго и третьего уровней и указать, какое свойство искать в переменной.Как использовать переменную, чтобы выбрать, какое свойство объекта искать?

Вот моя попытка кода.

for (var j = 0; j < currentSnapshot.products.length; j++) { 
     currentSnapshot.products[j].[firstLayer]; // Is this line kosher? 
     if (secondLayer) { 
      for (var i = 0; i < secondLayer.length; i++) { 
       secondLayer[i]; // Do something. 
      }; 
     }; 
    }; 

Каков наилучший способ для этого? Спасибо за любую помощь.

Это выглядит для. , в с .hasownproperty - это то, что я ищу. Как вы делаете эту работу для второго слоя глубоко - свойства свойств?

+1

Как выглядит JSON? Итерация над объектными свойствами обычно выполняется с помощью in..in, хотя с реализациями ES5 вы можете выполнять 'Object.keys (obj) .forEach (function (key) {obj [key]});' для собственных перечислимых свойств * obj *. – RobG

+0

Спасибо. Да, для .. в том, что я ищу. Мне просто нужно искать второй слой (свойства объектов внутри объектов). – wibberding

ответ

1

Я не уверен, я понимаю ваше требование, но я попытаюсь ответить:

for (var j = 0; j < currentSnapshot.products.length; j++) { 
    var secondLayer = currentSnapshot.products[j][firstLayer]; 
    if(secondLayer){ 
     for(var i = 0; i < secondLayer.length; i++) { 
      secondLayer[i]; // Do something. 
     }; 
    }; 
}; 

То есть, если предположить, firstLayer уже относится к строке, которая является собственностью вы хотите получить доступ. Это также предполагает, что currentSnapshot.products является массивом объектов, а secondLayer также является массивом.

Также обратите внимание, что я удалил период между квадратными скобками в .products[j].[firstLayer], что является синтаксической ошибкой.

+0

Я поставил точку между скобками «товары [j] [firstlayer]« Вот и все. Благодаря! – wibberding

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