2012-05-02 64 views
3

我知道javascript不允許真正的多維數組,但是您可以通過在數組中將數組「排隊」在一起。在javascript中創建多維數組

我有2個問題;

1)將10個數組轉換爲1個多維數組,其中有10個數組可以改善,損壞或不影響網頁的性能?我希望創建一個有100個元素的數組,每個元素都是2個元素的數組,最後每個元素都是不確定長度的數組。

我有以下代碼來創建這個「多維」數組:

var RouteArray = new Array(100); 
for (var i=0; i <100; i++) 
{ 
RouteArray[i]=new Array(2); 
    for (var j=0; j <2; j++) 
    { 
    RouteArray[i][j] = new Array(); 
    } 
} 

這段代碼明智?或者您是否有經驗的編碼人員能夠提出更好的方法?

另外我假設我可以再加入到不確定的陣列上面用下面的代碼描述的多維陣列中:

RouteArray[88][0].push(ValueToPush); 

終於可以我然後調用使用以下我剛推值?

Var ValueAdded = RouteArray[88][0][0]; 

預先感謝您的時間,並道歉,如果這個問題已經回答了其他地方,我也嘗試搜索,但要麼不明白以前的職位或發現他們一點都不像我說的情況我不能不適用他們的建議。

約翰

+0

這個問題很可能是更多的話題上[代碼審查(http://codereview.stackexchange.com)。 –

+0

作爲一般建議,請熟悉諸如FireBug或Safari開發者控制檯之類的工具。你可以交互式地嘗試一些東西。或者只寫一個最小的html頁面幷包含你的示例代碼。只是嘗試的東西。 – snies

+0

你的兩個好朋友是http://jsfiddle.net/(玩代碼)和http://jsperf.com/(比較性能)。在這種情況下,我會盡可能地懶於初始化數組。 – tjp

回答

3

1)將10個轉化成陣列,其具有在其內 10陣列改善,損害或對網頁的 性能沒有影響1個多維數組?

幾乎肯定沒有性能影響,但它會對您理解代碼和編寫更少錯誤的能力產生巨大影響。

2)我希望創建具有100個索引的陣列,每個這些 的將與2個索引的陣列,並且最後這些2個 索引的每個被填充將具有不定長度的數組。

這將完全像您的示例代碼大綱一樣,如果您想讓自己的腳溼潤,這將是一個很好的起點。在實踐中,具有許多維度的數組並不總是最好的數據結構來模擬您的代碼所處理的任何內容,主要是因爲它們不是「可發現的」:您必須事先知道每個維度是什麼。

在任何一種特定場景中,有更好的方式來構建數據是很有可能的,但我們必須具體談論。無論如何,您提供的代碼都可以使用。

+0

謝謝你的建議和輸入喬恩。我剛剛遇到另一個問題,我能夠使用var ValueAddedArray = RouteArray [88] [0];從多維數組中調用整個數組。 – TranquilityEden

+1

你可以這樣做,但要小心 - ValueAddedArray將是對RouteArray [88] [0]的引用 - 如果你改變一個,另一個也會改變。 – tjp

+0

@tjp謝謝你的迴應,我只想檢查我明白你在說什麼。如果我要做如下的事情:var ValueAddedArray = RouteArray [88] [0];接着是ValueAddedArray [2] =「NewValue」;這會同時將值NewValue添加到ValueAdded [2]和RouteArray [88] [0] [2]?也會ValueAddedArray.clear();只清空保存在RouteArray [88] [0]索引中的數組,還是整個RouteArray? – TranquilityEden