You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Uncaught TypeError排查:矩阵转置函数无法读取undefined的'0'属性

错误原因与修复方案

问题分析

你遇到的Cannot read properties of undefined (reading '0')错误,根源是循环逻辑搞反了:

  • 原输入矩阵是2行3列([[1,2,3],[4,5,6]]),转置后应该是3行2列。
  • 你当前的外层循环遍历原矩阵的行数(2次),只创建了2个行数组,但内层循环遍历原矩阵的列数(3次)。当j=2时,matrix[j]对应原矩阵的第3行,而原矩阵只有2行(索引0和1),所以matrix[2]是undefined,读取matrix[2][i]自然触发报错。

修复后的代码

function transpose(matrix) {
  var transposed = [],
    rows = matrix.length,
    cols = matrix[0].length;

  // 外层循环遍历原矩阵的列数(转置后的行数)
  for (var i = 0; i < cols; i++) {
    transposed[i] = [];
    // 内层循环遍历原矩阵的行数(转置后的列数)
    for (var j = 0; j < rows; j++) {
      transposed[i][j] = matrix[j][i];
    }
  }

  return transposed;
}

let result = transpose([[1, 2, 3], [4, 5, 6]]);
console.log(result) // 输出 [[1,4],[2,5],[3,6]],符合预期

关键修正点

  • 外层循环次数从原矩阵的行数(rows)改为列数(cols),保证转置后的行数等于原矩阵的列数。
  • 内层循环次数从原矩阵的列数(cols)改为行数(rows),保证转置后的列数等于原矩阵的行数。

内容的提问来源于stack exchange,提问作者dvsd9p7m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:55:22