转置2D数组 - 无法设置属性' 0'未定义的

时间:2017-06-27 20:48:35

标签: arrays typescript transpose

我在打字稿中有一个代码来转置M x N矩阵:

private transpose(a: number[][]): number[][] {
    let m: number = a.length;
    let n: number = a[0].length;
    let b: number[][] = [[]]; // Tried without "[[]]"
    for (let i: number = 0; i < m; i++) {
        for (let j: number = 0; j < n; j++) {
            b[j][i] = a[i][j]; // Error
        }
    }
    return b;
}

但是,我有一个错误:

Uncaught (in promise): TypeError: Cannot set property '0' of undefined

如何正确初始化2D阵列?

P.S。已经尝试for..in但仍有问题

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

应该是:

let b: number[][] = [];
for (let i: number = 0; i < m; i++) {
    b[i] = [];

    for (let j: number = 0; j < n; j++) {
        b[i][j] = a[j][i];
    }
}

首先创建一个数组,然后为i的每次迭代创建另一个内部数组