2015-04-24 64 views
1

如果我想添加一个变量作为属性我得到的错误(。):JS:添加变量作为属性与(+)

"Uncaught SyntaxError: Unexpected token +"

所以基本上我想添加

var tables = ["table1", "table2", "table3"]; 
    for (var x = 0; x < tables.length; x++) { 
    var item = $database. + tables[x]; 
    console.log(item); 
    } 

如果我使用(“)这样的 var item = "$database." + tables[x];

它的工作原理,但它变成:从一个循环的属性,以JSON像这样的变量一个字符串(如果这是正确的名称),所以我无法查看JSON对象。

为什么会发生这种情况,甚至有可能这样做?

谢谢!

+2

也许你的意思是'$ database [tables [x]]'但没有上下文,很难说。取决于'$ database'是什么。 –

+2

如果您需要将属性名称作为字符串传递,请使用括号表示法。所以像'var item = $ database [tables [x]];' –

回答

6

试试这个:

for (var x = 0; x < tables.length; x++) { 
    var item = $database[tables[x]]; 
    console.log(item); 
} 

如果您$database是动态的,你不希望有表名的硬编码的数组,你也可以使用Object.keys()

var tables = Object.keys($database); 
+0

哇! 99+为“Object.keys()”这非常有用!谢谢! :d – BlitZz

5

你可以使用括号表示法:

for (var x = 0; x < tables.length; x++) { 
    var item = $database[tables[x]]; 
    console.log(item); 
}