javascript矩阵转置需先校验矩形结构,再用map+map实现简洁转置;对不规则数组需补全或设默认值;大数据量时用for循环提升性能。

JavaScript 中对多维数组做矩阵转置,核心是把原数组的行变成列、列变成行。前提是该数组是“矩形”结构(每行长度一致),否则需先校验或补全。
确认输入是合法矩阵
转置只对规则二维数组有意义。如果遇到 [[1,2], [3,4,5]] 这类不规则数组,直接转置会出错或结果异常。
- 检查是否为空数组:
arr.length === 0 - 检查每行长度是否一致:
arr.every(row => row.length === arr[0].length) - 可选:用
Array.from({length: cols}, () => [])初始化新矩阵,避免稀疏数组问题
基础转置:map + map 实现
最简洁常用的方式,适合中小型数据:
const transpose = (matrix) => {
if (!matrix.length || !matrix[0].length) return [];
return matrix[0].map((_, colIndex) =>
matrix.map(row => row[colIndex])
);
};
例如:transpose([[1,2,3], [4,5,6]]) → [[1,4], [2,5], [3,6]]
兼容空行/稀疏情况的健壮版本
当某行可能为空或缺失元素时,可加默认值处理:
const transposeSafe = (matrix, defaultValue = null) => {
if (!matrix.length) return [];
const cols = Math.max(...matrix.map(row => row?.length || 0));
return Array.from({ length: cols }, (_, j) =>
matrix.map(row => row?.[j] !== undefined ? row[j] : defaultValue)
);
};
例如:transposeSafe([[1,2], [3]], 0) → [[1,3], [2,0]]
大矩阵性能优化:传统 for 循环
对上万行×列的数据,避免高阶函数频繁创建中间数组:
const transposeFast = (matrix) => {
if (!matrix.length || !matrix[0].length) return [];
const rows = matrix.length;
const cols = matrix[0].length;
const result = Array(cols);
for (let j = 0; j
<p>转置本身不复杂,关键在明确输入约束和使用场景——小数据图简洁,大数据求效率,不规则数据要兜底。</p>Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











