我正在處理一些處理「單元」對象的二維數組的代碼。索引到2D數組時,JavaScript類型錯誤
function randomDestFromStart(cell, temp)
{
function addPossible(x, y)
{
var test1 = temp[x];
var test2 = test1[y]; // This line
// ... //
}
for (var i = 0; i < temp[0].length; i++)
addPossible(cell.x, i);
// ... //
}
temp
是2D陣列,和cell
是一個特定Cell對象。定義test2
導致以下錯誤:
TypeError: test1 is undefined
我已經在調試器x
和y
是有效的整數確認(在這種特殊情況下,他們分別爲0和1)。 temp
是由5個Cell對象組成的有效數組,所以不應該有任何種類的索引超出界限的錯誤。看起來似乎沒有將一個級別索引到temp
的問題,因爲test1
是5個單元的有效陣列(基本上是一行temp
)。問題是,當我索引到數組的第二維時,這很奇怪,因爲索引到同一個確切數組中的代碼的其他部分。
編輯:問題似乎與x和y的輸入。當我硬編碼這些值時,一切正常。例如,addPossible(2, 3)
的作品。當動態提供值時發生錯誤,但這很奇怪,因爲即使在這些情況下,調試器也將x和y顯示爲完全正常和有效的整數。我99%確定這不是一個界限問題。我已經檢查過,數組是5x5,x和y總是在0和4之間。
請顯示數組的內容。沒有看到您想要讀取的數據,我們無法告訴您發生了什麼。 –
對於迭代循環,您不應該沒有將第一級數組索引硬編碼爲0嗎? 「i
Casey
您可以在'addPossible'定義的最開始插入'console.log(temp)'並告訴我們它會說什麼? – Dmitry