JavaScript で 2D 配列を転置する 質問する

JavaScript で 2D 配列を転置する 質問する

次のような配列の配列があります:

[
    [1,2,3],
    [1,2,3],
    [1,2,3],
]

これを転置して次の配列を取得したいと思います。

[
    [1,1,1],
    [2,2,2],
    [3,3,3],
]

ループを使用してプログラム的に実行するのは難しくありません。

function transposeArray(array, arrayLength){
    var newArray = [];
    for(var i = 0; i < array.length; i++){
        newArray.push([]);
    };

    for(var i = 0; i < array.length; i++){
        for(var j = 0; j < arrayLength; j++){
            newArray[j].push(array[i][j]);
        };
    };

    return newArray;
}

しかし、これは面倒なようですし、もっと簡単な方法があるはずだと感じます。あるのでしょうか?

ベストアンサー1

output = array[0].map((_, colIndex) => array.map(row => row[colIndex]));

map配列内の各要素に対して指定された関数を順番に 1 回呼び出しcallback、その結果から新しい配列を構築します。 は、callback値が割り当てられた配列のインデックスに対してのみ呼び出されます。削除されたインデックスや、値が割り当てられたことのないインデックスに対しては呼び出されません。

callback要素の値、要素のインデックス、および走査される配列オブジェクトの 3 つの引数で呼び出されます。[ソース]

おすすめ記事