循环遍历多维数组

js - loop through multidimensional array

本文关键字:数组 遍历 循环      更新时间:2023-09-26

我正在尝试在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: Cannot read property '0' of undefined。我的代码有什么问题?

感谢@Matt的评论,他指出了这一点。

遍历数组最常用的格式是:

 for(var i=0; i<array.length; i++) {
     doSomethingWith(array[i];
 }

注意这是一个"小于"操作符,而不是一个"小于等于"操作符。

此循环从0计数到array.length - 1,因为for语句的第二部分:i < array.length表示"只要i小于array.length,就继续重复"。

…这就是你想要的,因为数组的长度是从0到1。也就是说,长度为4的数组编号为0、1、2、3。

如果你在i <= 4时循环,那么循环将执行0、1、2、3、4——在Javascript中,当它引用array[4]时,它将获得undefined

有时在for循环中确实需要"<=",但这是非常例外的情况。当你使用"<="的时候,考虑添加一个注释来说明原因。

你的问题是你的索引(越界)当i=acKey.length.

可以使用i<acKey。长度或实现"for>

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]);
}