2012-02-01 2 views
0

Я пытаюсь прочитать значения из объекта JStorage JSON с именем data.shake (свойства val1 .. val6), но не могу указать правильный синтаксис, чтобы он работал правильно. например, вывод журнала консоли не показывает значения, хранящиеся в нем.Как извлечь свойство на основе содержимого переменной в Javascript?

var sports = {1:'val1',2:'val2',3:'val3', 
       4:'val4',5:'val5',6:'val6'}; 

    for (sport in sports) { 
     if ('data.shake.'+sports[sport] != 0) { 
      console.log(sports[sport]+':'+'data.shake.'+sports[sport]) 
      //output: val1:data.shake.val1 
     } 
    } 
+1

Что такое 'data.shake'? – Paul

+1

У меня такое чувство, что кто-то скажет вам использовать 'eval'. Не делай этого. –

+0

Его объект jStorage JSON – kritop

ответ

3

Я думаю, что вы, вероятно, имели в виду следующее:.

data.shake[sports[sport]] 

Вы не можете просто использовать строку (например, 'data.shake. и ожидать Javascript, чтобы превратить это в переменную для вас Вы эффективно делать это :

if ('data.shake.val1' != 0) { 

Очевидно, что условие всегда будет проходить, потому что не пустые строки (кроме "0") не равны 0

Необходимый синтаксис использует square bracket member operator, который позволяет вам получить доступ к элементам объекта, используя результат выражения.

+0

Да, это сработало! Огромное спасибо! – kritop

1

Это моя догадка на то, что вы пытаетесь сделать с кодом вы предоставили:

var sports = {1:'val1',2:'val2',3:'val3', 
       4:'val4',5:'val5',6:'val6'}; 
var data = { 
    shake: {val1: 'some data', val2: 'some other data'} 
}; 

for (sport in sports) { 
    if (data.shake[sports[sport]] !== undefined) { 
     console.log(sports[sport]+':'+ data.shake[sports[sport]]) 
    } 
} 

Вы можете увидеть его в действии здесь:

http://jsfiddle.net/LseUp/

Надеется, что это помогает!

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