JavaScript嵌套循环反转二维数组触发类型错误无输出问题
问题排查
你的代码运行触发类型错误、控制台无输出、结果不符合预期,由两个明确问题导致:
- 拼写错误:获取子数组长度时把属性名
length错写为lenght,读取不存在的属性会返回undefined,对undefined执行减1操作得到NaN,循环条件无法对NaN做有效数值比较,直接触发类型错误中断所有代码执行,这是控制台没有任何输出的核心原因。 - 循环边界设置错误:两层循环的终止条件都写为
> 0,就算修正拼写问题,也会漏掉所有索引为0的元素:外层循环只会遍历索引2、1的两个子数组,漏掉索引0的[1,2,3];内层循环只会遍历每个子数组索引2、1的元素,漏掉每个子数组索引0的元素,最终输出会缺失3、2、1三个值,达不到预期输出效果。
修正实现
不需要调用内置reverse()方法,仅修正拼写和循环边界即可实现需求,代码如下:
let arr = [[1,2,3],[4,5,6],[7,8,9]]; // 外层从最后一个子数组开始倒序遍历,终止条件i >= 0覆盖所有子数组 for(let i = arr.length - 1; i >= 0; i--) { // 修正length拼写,内层从子数组最后一个元素开始倒序遍历,终止条件j >=0覆盖所有元素 for (let j = arr[i].length - 1; j >= 0; j--) { console.log(arr[i][j]); } }
运行上述代码后,控制台会按顺序输出9、8、7、6、5、4、3、2、1,完全匹配预期结果。
内容的提问来源于stack exchange,提问作者user218592
相关产品推荐
相关产品推荐

