簡體   English   中英

js-遍歷多維數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM