我還沒有在網站上發現這個問題的答案。我將如何在JavaScript中動態命名數組?我需要生成一些數組,其數量是在運行時確定的。我試圖做出單獨的ajax請求,將單個數組發送到一個php腳本進行處理。如何在javascript中動態命名數組?
我想出了這一點,但它不工作:
var 'objectArray'+id = [];
我還沒有在網站上發現這個問題的答案。我將如何在JavaScript中動態命名數組?我需要生成一些數組,其數量是在運行時確定的。我試圖做出單獨的ajax請求,將單個數組發送到一個php腳本進行處理。如何在javascript中動態命名數組?
我想出了這一點,但它不工作:
var 'objectArray'+id = [];
的典型方法是將有數組的數組。
var arrayOfArrays = [];
arrayOfArrays[id] = []; // add sub array
您要求的是一種動態範圍界定,JavaScript不支持。你可以調用編譯器和eval
它,但這是一個非常糟糕的主意。
儘管在Javascript中不會引起太多問題,但在數組中使用仿造鍵的確存在一些錯誤(如果內存對我有用,它可能會導致問題,但這不是數組的意圖使用的方式)。 –
@DavidMulder是什麼讓你覺得'id'不是數字?在每一種情況下,我都看到了人們在做這些事情(通常人們在DOM中這樣做),實際上id也是數字)。當然,如果你使用一個普通的字符串作爲鍵,你應該使用一個Map對象(而不是一個對象)。適當的數據結構以實現適當的目標。 –
它可能是數字,但像'[undefined x 1234,[],undefined x 5678,[]等]的數組真的是一團糟。 –
最簡單的事情僅僅是創建一個對象,並在其中
var objectArrays = {};
objectArrays[id] = [];
將它們設置爲字面上這樣做的方式你想要的是找到目前在你的範圍,並在其中設置它或使用eval。
的一個好方法是使用一個數組的數組的建議:
var objectArray = [];
objectArray[id] = [];
如果你不想使用自己的數組,你可以使用保存窗口全局變量,以存儲窗口對象它有一個值作爲一個全局變量(不是一個好的做法雖然):
window["objectArray" + id] = [];
最後,(在這種情況下壞)做的另一種方法是使用eval
(這是評價的一種方式在某種意義上在JavaScript
在runtine中的表達):
eval("var objectArray" + id + " = [];");
。在這種情況下,這是一個糟糕的主意。 –
同意,但它仍然是一種方法來做到這一點。相應地修改答案。 –
變量的範圍是什麼?如果它是全局的,你可以做'window ['objectArray'+ id] = [];'。 –
我很懷疑這是一個比只使用對象鍵更好的主意。 –