2012-07-08 12 views
0

在開始時定義變量時,無法定義第二個2d數組。爲什麼?應該怎麼做?用Javascript定義數組

var NPC = new Array(10); 
for (var i = 0; i < 10; i++) 
{ 
    NPC[i] = new Array(7); 
}; 

var previous_bead_NPC = new Array(10); 
for (var i = 0; i < 10; i++) 
{ 
    previous_bead_NPC[i] = new Array(7); 
}; 
+0

你是什麼意思,它「未能定義2d陣列」。你怎麼知道? – Pointy 2012-07-08 14:49:44

+0

我沒有看到第二個數組有任何問題。當你這樣做或者你想要使用這些數組時,你有沒有收到錯誤信息? – Tys 2012-07-08 14:55:05

+0

在Firebug中,我只能看到NPC陣列,第二個不在。 – DerpTomi 2012-07-08 14:57:14

回答

2

有沒有真正的點使用數組構造:

var NPC = []; 

是罰款。無論如何,JavaScript並沒有預先分配空間(至少現代運行時沒有)。如果你想的陣列,以具有特定的長度,則可以做到這一點:如果你想的10行,陣列因此

NPC[9] = undefined; // now it'll be 10 elements long 

其中的每一個是長度爲7的數組:

var NPC = []; 
for (var i = 0; i < 10; ++i) { 
    NPC[i] = []; 
    NPC[i][6] = undefined; 
} 

(我不知道爲什麼你會想,但我想這可能成爲某種目的。)

+0

我想,舊習慣很難打破。 – 2012-07-08 14:59:48

+0

將元素設置爲未定義的地方有什麼意義?設置length屬性(最好在使用Array構造函數進行初始化時)似乎不那麼令人困惑。 – Bergi 2012-07-08 15:51:31

+0

你知道,你是對的;今天早上我沒有足夠的咖啡。 :-)好吧,我個人也不喜歡Array構造函數,因爲語義太奇怪而且不一致。我認爲這個問題完全沒有意義。 – Pointy 2012-07-08 15:54:40

1

enter image description here

這是我所看到的,當我在一個樣本網站在代碼粘貼。未做任何修改。所以我想你的問題可以通過修復/更新你的螢火蟲來解決;)

+0

我不知道爲什麼它沒有正確列出previous_bead_NPC - 我將它改爲Previous_bead_NPC,現在我可以像你一樣看到它。有史以來最愚蠢的事情。 – DerpTomi 2012-07-08 15:13:44

+0

也在jsFiddle演示:http://i.imgur.com/FplTs.png – 2012-07-08 15:18:28

+0

@ user1510009沒問題的傢伙。我將這個問題標記爲刪除,因爲最後在這個問題中沒有價值,或者它是答案。 – Tys 2012-07-08 15:25:24