2013-04-29 32 views
1

我必须“获取”一个数组,但我拥有的是一个与数组名称匹配的字符串。显然,这种事情就不会工作,但它显示了我想要做的事:Javascript:数组名称为字符串;需要它来引用实际的数组

var arrayname = new Array(1, 2, 3); 
var array = 'arrayname'; 

Alert(array[0]); 

当然,上述yeilds“一”,而不是1中的例子,就像我所需要的。

背景是我正在使用Hyperion商业智能仪表板,其中使用哪个数组由哪个按钮的名称的子字符串决定,该名称用于调用它。

+0

哪里数组引用?它是一些对象的属性吗?我希望你不要告诉我这是一个全球变量! – Brandon 2013-04-29 15:08:14

+1

这将有助于:http://stackoverflow.com/questions/1664282/javascript-refer-to-a-variable-using-a-string-containing-its-name – tymeJV 2013-04-29 15:08:20

+0

感谢pageslap tymeJV :)我做了搜索,但适当的关键字躲过了我,而自动结果并没有。这几乎是我的同一个问题。在我的模型中,它看起来像eval()就是我正在寻找的东西,但我需要付诸实践。谢谢! – undrline 2013-04-29 15:19:21

回答

6

这很简单。

var storage = {}; 
storage.arrayname = [1, 2, 3]; 
alert(storage["arrayname"].join(',')); 

强烈建议不要污染全局命名空间。我强烈建议您不要为此使用window对象。请阅读HERE了解更多详情。

+0

我认为这与@ pscoder的答案类似,但创建了一些非窗口的用途。对于我的目的而言,仍然显得尴尬和复杂,但也许我会回到它。 – undrline 2013-04-29 15:31:37

+1

@EdwardD:既不尴尬也不复杂。这只是一个简单的对象,并且是适当的解决方案。你可以将它缩短到'var obj = {arrayname:[1,2,3]};'然后作为'obj [array] [0];' – 2013-04-29 15:43:39

2

如果在窗口上下文中定义它,请尝试使用window对象来检索它。

var array = window["arrayname"] 
+1

访问不幸的是,Hyperion没有窗口或者我可以调用的文档在他们的Javascript版本中。 – undrline 2013-04-29 15:29:37

0

您可以使用

array = window['arrayname']; 
相关问题