2017-07-21 9 views
0

我初始化的2維陣列是這樣的:與環可變訪問數組

var spielfeld = new Array(400); 
for (var i = 0; i < spielfeld.length; i++) { 
     spielfeld[i] = new Array(400); 
    } 
for (var i = 0; i < spielfeld.length; i++) { 
    for (var f = 0; f < spielfeld[i].length; f++) { 
     spielfeld[i][f] = false; 
    } 
} 

現在我想來遍歷它的方式我在inizialisation的第二部分做了相同的,並檢查其內容這個的。像:

for (var i = 0; i < spielfeld.length; i++) { 
     for (var f = 0; f < spielfeld[i].length; f++) { 
      nachbarn = new Array(8); 
      if (spielfeld[i - 1][f - 1] == true) { 
      //stuff i wanna do 
      } 
     } 
} 

但鉻調試器給了我這個錯誤:未捕獲的類型錯誤:

Uncaught TypeError: Cannot read property '-1' of undefined

有人可以解釋這樣對我?

+2

數組中的第一個迭代結果被訪問越界。 'i'從'0'開始,然後你做:'if(spielfeld [i - 1]'...試圖訪問'-1'的索引,這會引發一個錯誤。 – tymeJV

+2

'spielfeld [-1 ]'undefined',然後'undefined [-1]'拋出一個錯誤 – 4castle

回答

0

更改您這樣的代碼:

for (var i = 1; i <= spielfeld.length; i++) { 
     for (var f = 1; f <= spielfeld[i].length; f++) { 
     nachbarn = new Array(8); 
      if (spielfeld[i - 1][f - 1] == true) { 
      //stuff i wanna do 
      } 
     } 
} 

所以你不必調用spielfeld[-1][-1]在第一次迭代

+0

但是因此它需要設置更高的限制,比如:'i <= spielfeld.length'對嗎? – Pfollvosten

+0

是的,修復了我的答案 –

0

spielfeld[-1]評估爲undefined,並且訪問它的[-1]產生Uncaught TypeError
JS的問題是,與Python不同,[-1]沒有環繞。