JavaScript中嵌套循环处理二维矩阵的核心是外层遍历行、内层遍历列,本质是操作“数组的数组”;基础用for嵌套,注意行列索引范围及不规则矩阵的空值防护。

JavaScript 中用嵌套循环处理二维矩阵,核心是外层循环遍历行(数组的每一项),内层循环遍历列(当前行数组的每个元素)。只要理解矩阵本质是“数组的数组”,写法就很自然。
基础写法:for 循环嵌套
最直观、兼容性最好的方式:
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
<p>for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
console.log(<code>matrix[${i}][${j}] = ${matrix[i][j]}</code>);
}
}
注意点:
- 外层 i 控制行索引,范围是 0 到 matrix.length - 1
- 内层 j 控制列索引,范围是 0 到 matrix[i].length - 1(每行长度可能不同)
- 直接用 matrix[i][j] 访问元素,无需额外判断是否存在
更安全的写法:加空值检查
当矩阵可能含空行或不规则结构时,建议加防护:
立即学习“Java免费学习笔记(深入)”;
for (let i = 0; i < matrix.length; i++) {
const row = matrix[i];
if (!Array.isArray(row)) continue; // 跳过非数组行
for (let j = 0; j < row.length; j++) {
const value = row[j];
// 处理 value,比如求和、筛选、修改等
}
}
常见适用场景:
- 从 API 获取的数据结构不稳定
- 手动构造矩阵时某行被设为 null 或 undefined
- 需要跳过空单元格(如表格中合并单元格后的稀疏数据)
函数式替代方案:forEach 嵌套
语义更清晰,适合只读操作或副作用(如打印、收集):
matrix.forEach((row, i) => {
row.forEach((value, j) => {
console.log(`第 ${i} 行第 ${j} 列: ${value}`);
});
});
注意限制:
- 不能用 break/continue 中断循环,需改用 return(仅跳出当前内层)
- 无法直接获取索引做复杂逻辑(比如只处理主对角线),此时仍推荐传统 for
- 若需中途退出,可封装成函数 + return,或改用 for…of + label
实际常用操作示例
处理二维矩阵不只是遍历,常伴随具体任务:
-
求所有元素之和:
let sum = 0; for...for { sum += matrix[i][j]; } -
查找某个值的位置:找到后立即
break外层循环(可用标签实现) - 转置矩阵:新建 result[j][i] = matrix[i][j],注意先初始化目标数组
-
按行/列映射生成新矩阵:例如每行取最大值
matrix.map(row => Math.max(...row))
嵌套循环本身不复杂,关键在明确目的——是遍历、查找、变换,还是聚合。选对结构,再加一点边界防护,二维矩阵处理就稳了。


















