1. ホーム
  2. javascript

[解決済み] JavaScriptで2次元配列の転置を行う

2022-02-05 04:28:18

質問

配列の配列のようなものがあるのですが。

[
    [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;
}

しかし、これはかさばるので、もっと簡単な方法があるような気がします。あるのでしょうか?

どのように解決するのですか?

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

map は、提供された callback 関数は、配列の各要素に対して順番に一度ずつ実行し、 その結果から新しい配列を作成します。 callback は、値が割り当てられている配列のインデックスに対してのみ実行されます。 削除されたインデックスや値が割り当てられていないインデックスに対しては実行されません。

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