【问题标题】:Matrix transpose JS矩阵转置JS
【发布时间】:2022-10-05 12:14:18
【问题描述】:

输出矩阵转置的函数 - 一个新矩阵,其中原始的列和行被交换。我想弄清楚为什么第二个函数输出不正确的结果?

function transpose(matrix) {
    let res = [];
    for(let i = 0;  i < matrix[0].length; i++) {
        res[i] = [];
        for(let j = 0;  j < matrix.length; j++) {
            res[i][j] = matrix[j][i];
        }
    }
    return res; 
}

function transpose(matrix) {
    let res = Array(matrix[0].length).fill([]);
    for(let i = 0;  i < res.length; i++) {
        for(let j = 0;  j < matrix.length; j++) {
            res[i][j] = matrix[j][i];
        }
    }
    return res; 
}

    标签: javascript matrix transpose


    【解决方案1】:

    我认为第二个函数由于let res 行而失败。当您使用.fill([]) 时,您将填充与givemesnacks mentions in this comment 相同的数组。

    如果您执行console.log(transpose([[1, 2, 3], [7, 4, 3]])),您会注意到数组中的元素是相同的。

    要解决此问题,您可以尝试let res = Array(matrix[0].length).fill().map(() =&gt; []);,它应该为每一行添加一个新的空数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-11
      • 2014-09-08
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      相关资源
      最近更新 更多