[英]js - loop through multidimensional array
我正在嘗試在for循環中實現jQuery熱鍵。
acKey = [
["keydown", "alt+d", open],
["keydown", "alt+a", close],
["keydown", "alt+s", max],
];
for(i=0;i<=acKey.length;i++)
{
$(document).bind(acKey[i][0], acKey[i][1], acKey[i][2]);
}
但是,結果是出現錯誤Uncaught TypeError:無法讀取undefined的屬性“ 0” 。 我的代碼有什么問題?
由於對@Matt表示感謝,他的評論指出了這一點。
遍歷數組的最常見格式是:
for(var i=0; i<array.length; i++) {
doSomethingWith(array[i];
}
請注意,這是一個“小於”運算符,而不是“小於或等於”運算符。
此循環從0到array.length - 1
計數,因為for
語句的第二部分: i < array.length
,意味着“只要i < array.length
,就一直重復。
...這就是您想要的,因為數組的編號從0到length-1。 也就是說,長度為4的數組編號為0、1、2、3。
如果在i <= 4
循環,則循環將執行0、1、2、3、4 -在Javascript中,當引用array[4]
時,它將變得undefined
。
有時在for循環中確實需要“ <=”,但這是非常例外。 每當您使用“ <=”時,請考慮添加注釋以說明原因。
您的問題是當i = acKey.length時索引(越界)。
您可以使用i <acKey.lenght或實現“ for each”迭代以避免混淆:
acKey = [
["keydown", "alt+d", open],
["keydown", "alt+a", close],
["keydown", "alt+s", max],
];
var sub;
for(i in acKey) {
sub = acKey[i];
$(document).bind(sub[0], sub[1], sub[2]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.