JavaScript嵌套循环遍历二维数组逐个打印元素原理解析
二维数组嵌套循环遍历逻辑说明
listOfNeighbors是JavaScript中的二维数组:外层数组的每个元素本身也是数组,每个子数组对应一组邻国数据。
题解代码如下:
const listOfNeighbors = [['Canada', 'Mexico'], ['Spain'], ['Norway', 'Sweden', 'Russia']] for (let i = 0; i < listOfNeighbors.length; i++) { for (let j = 0; j < listOfNeighbors[i].length; j++) { console.log(listOfNeighbors[i][j]); } }
两层循环的分工明确:
- 外层循环负责遍历外层的分组数组:循环变量
i从0递增到外层数组长度减1,每一轮listOfNeighbors[i]取到的是对应位置的一整个邻国分组子数组。 - 内层循环负责遍历当前轮次拿到的单个分组子数组:循环变量
j从0递增到当前子数组的长度减1,每一轮通过listOfNeighbors[i][j]的双索引写法,直接取到子数组内部的单个国家字符串,再执行打印。
完整执行过程逐轮拆解:
- 外层i=0,对应子数组为
['Canada', 'Mexico'],子数组长度为2
- 内层j=0:取索引[0][0]的值
Canada,打印- 内层j=1:取索引[0][1]的值
Mexico,打印- 内层循环执行完毕,返回外层循环进入下一轮
- 外层i=1,对应子数组为
['Spain'],子数组长度为1
- 内层j=0:取索引[1][0]的值
Spain,打印- 内层循环执行完毕,返回外层循环进入下一轮
- 外层i=2,对应子数组为
['Norway', 'Sweden', 'Russia'],子数组长度为3
- 内层j=0:取索引[2][0]的值
Norway,打印- 内层j=1:取索引[2][1]的值
Sweden,打印- 内层j=2:取索引[2][2]的值
Russia,打印- 内层循环执行完毕,外层i递增到3,等于外层数组长度3,不满足循环判断条件,整个遍历结束
代码不会输出整组子数组的核心原因:打印语句传入的参数是带双索引的listOfNeighbors[i][j],指向的是子数组内部的单个字符串元素;如果要打印整组子数组,才需要传入仅带单层索引的listOfNeighbors[i]。
内容的提问来源于stack exchange,提问作者user19295453
相关产品推荐
相关产品推荐

