繁体   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