2013-04-29 47 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']; 
相關問題