JavaScript 嵌套循环
什么是嵌套循环?
嵌套循环是指在一个循环内部包含另一个循环的结构。在JavaScript中,我们可以在任何类型的循环(for
、while
、do...while
)内部放置另一个循环,形成嵌套结构。这种结构使我们能够处理多维数据或需要重复执行复杂模式的情况。
简单来说,外部循环每执行一次,内部循环就会完整地执行一遍。这就像是时钟的时针和分针:时针走一格(外循环),分针要走完一圈(内循环)。
嵌套循环的基本语法
嵌套for循环
for (初始化外部循环变量; 外部循环条件; 外部循环变量更新) {
// 外部循环代码
for (初始化内部循环变量; 内部循环条件; 内部循环变量更新) {
// 内部循环代码
// 这里的代码会被执行:外部循环次数 × 内部循环次数
}
}
让我们通过一个简单的例子来理解:
// 打印3行,每行5个星号
for (let i = 0; i < 3; i++) {
let row = "";
for (let j = 0; j < 5; j++) {
row += "* ";
}
console.log(row);
}
输出:
* * * * *
* * * * *
* * * * *
在这个例子中:
- 外部循环负责生成3行
- 内部循环负责在每行中添加5个星号
嵌套循环的执行流程
为了更好地理解嵌套循环的执行流程,让我们详细跟踪上面示例的执行过程:
- 初始化外部循环变量
i = 0
- 检查
i < 3
(true) - 设置
row = ""
- 初始化内部循环变量
j = 0
- 检查
j < 5
(true) - 执行
row += "* "
,row变为"* "
j++
,j变为1- 检查
j < 5
(true) - 执行
row += "* "
,row变为"* * "
- 这个过程继续直到j = 5,内部循环结束
- 输出第一行星号
i++
,i变为1- 重复步骤2-11
- 以此类推...
嵌套循环的常见应用场景
1. 处理多维数组
多维数组是嵌套循环最常见的应用场景之一:
// 定义一个2x3的二维数组
const matrix = [
[1, 2, 3],
[4, 5, 6]
];
// 遍历并输出每个元素
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
console.log(`matrix[${i}][${j}] = ${matrix[i][j]}`);
}
}
输出:
matrix[0][0] = 1
matrix[0][1] = 2
matrix[0][2] = 3
matrix[1][0] = 4
matrix[1][1] = 5
matrix[1][2] = 6
2. 生成图形模式
嵌套循环可以用来生成各种图形模式,如三角形:
// 生成一个5行的直角三角形
for (let i = 1; i <= 5; i++) {
let row = "";
for (let j = 1; j <= i; j++) {
row += "* ";
}
console.log(row);
}
输出:
*
* *
* * *
* * * *
* * * * *
3. 表格生成
在网页开发中,嵌套循环常用于动态生成HTML表格:
// 生成一个3x3的表格(仅示例,实际中可能使用DOM操作)
let tableHtml = "<table border='1'>";
for (let i = 1; i <= 3; i++) {
tableHtml += "<tr>";
for (let j = 1; j <= 3; j++) {
tableHtml += `<td>单元格[${i},${j}]</td>`;
}
tableHtml += "</tr>";
}
tableHtml += "</table>";
console.log(tableHtml);
// 在实际应用中,我们会将tableHtml插入到DOM中