2016-02-27 51 views
0

我創建了一個數組,當我嘗試獲取數組的長度時,它工作正常。爲什麼我不能使用這個數組中的長度數?

var map = [ 
    [3, 0, 0, 2], 
    [7, 6, 6, 8], 
    [7, 6, 6, 8], 
    [5, 1, 1, 4] 
]; 

var i = map.length; 

i輸出4

當我嘗試使用i變量獲取使用var j = map[i].length;的列時,控制檯返回「map[i]未定義」。這怎麼會不起作用,但用實際的號碼取代i有效?

下面是一個example jsfiddle,只是取消註釋線路11

+1

您的意思是:'map [map.length - 1] .length' – felipsmartins

回答

2

i等於4。 JS數組的下標從0開始,所以你的數組中的最後一個元素是map[3]這意味着有在map[4]

你需要做的map[i-1]沒有元素 - 這個代碼應工作:

var j = map[i-1].length; 

這裏是它在您的jsfiddle工作:https://jsfiddle.net/zk7f8Ls2/2/

+0

這完全滑了我的腦海,謝謝! – Sosa

+0

完全沒問題!錯過是一件容易的事情! – millerbr

2

由於表索引是zero-based。表長度是4,但索引是0,1,2和3.當您嘗試訪問索引4時,您將收到錯誤。如你所說,

0

這是因爲i是4,記住數組開始0,如果你想看到的數組的最後一個項目只需加-1 map[i-1]

相關問題