如何在Javascript中转换存储为一维数组的二维方阵

Sco*_*McC 5 javascript arrays

我的问题与这个问题密切相关,但我正在寻找Javascript的解决方案

如何转换存储为C 1D阵列的二维矩阵

基本上我有一个2D方阵

1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)

存储如下

let anArray = [1 ,2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

如何转置此矩阵,以便我的源数组的元素切换如下?

let newArray = [1, 4, 7, 2, 5, 8, 3, 6, 9] 
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 4

您可以获取数组维度的长度,并将项目映射到新数组的特定索引上。

var array = [1 ,2, 3, 4, 5, 6, 7, 8, 9],
    n = Math.sqrt(array.length),
    transposed = array.map((_, i, a) => a[(i % n) * n + Math.floor(i / n)]);
    
console.log(transposed.join(' '));
Run Code Online (Sandbox Code Playgroud)