如何根据Javascript中的变量内容提取属性?

时间:2012-02-01 18:16:25

标签: javascript

我正在尝试从名为data.shake(val1 .. val6属性)的jStorage JSON对象中读出值,但是无法找出正确的语法以使其正确运行。例如,控制台日志输出不显示存储在其中的值。

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 
        }
     }

2 个答案:

答案 0 :(得分:3)

我想你可能是这个意思:

data.shake[sports[sport]]

你不能只使用一个字符串(例如'data.shake.并希望Javascript将它变成一个变量。你实际上是这样做的:

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

显然条件总是会通过,因为非空字符串("0"除外)不等于0

您需要的语法使用square bracket member operator,它允许您使用表达式的结果访问对象的成员。

答案 1 :(得分: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/

希望它有所帮助!