2015-06-25 31 views
0

我還沒有在網站上發現這個問題的答案。我將如何在JavaScript中動態命名數組?我需要生成一些數組,其數量是在運行時確定的。我試圖做出單獨的ajax請求,將單個數組發送到一個php腳本進行處理。如何在javascript中動態命名數組?

我想出了這一點,但它不工作:

var 'objectArray'+id = []; 
+0

變量的範圍是什麼?如果它是全局的,你可以做'window ['objectArray'+ id] = [];'。 –

+0

我很懷疑這是一個比只使用對象鍵更好的主意。 –

回答

2

的典型方法是將有數組的數組。

var arrayOfArrays = []; 
arrayOfArrays[id] = []; // add sub array 

您要求的是一種動態範圍界定,JavaScript不支持。你可以調用編譯器和eval它,但這是一個非常糟糕的主意。

+2

儘管在Javascript中不會引起太多問題,但在數組中使用仿造鍵的確存在一些錯誤(如果內存對我有用,它可能會導致問題,但這不是數組的意圖使用的方式)。 –

+0

@DavidMulder是什麼讓你覺得'id'不是數字?在每一種情況下,我都看到了人們在做這些事情(通常人們在DOM中這樣做),實際上id也是數字)。當然,如果你使用一個普通的字符串作爲鍵,你應該使用一個Map對象(而不是一個對象)。適當的數據結構以實現適當的目標。 –

+2

它可能是數字,但像'[undefined x 1234,[],undefined x 5678,[]等]的數組真的是一團糟。 –

1

最簡單的事情僅僅是創建一個對象,並在其中

var objectArrays = {}; 
objectArrays[id] = []; 

將它們設置爲字面上這樣做的方式你想要的是找到目前在你的範圍,並在其中設置它或使用eval。

0

的一個好方法是使用一個數組的數組的建議:

var objectArray = []; 
objectArray[id] = []; 

如果你不想使用自己的數組,你可以使用保存窗口全局變量,以存儲窗口對象它有一個值作爲一個全局變量(不是一個好的做法雖然):

window["objectArray" + id] = []; 

最後,(在這種情況下壞)做的另一種方法是使用eval(這是評價的一種方式在某種意義上在JavaScript在runtine中的表達):

eval("var objectArray" + id + " = [];"); 
+0

。在這種情況下,這是一個糟糕的主意。 –

+0

同意,但它仍然是一種方法來做到這一點。相應地修改答案。 –