[Javascript] 多次元配列を展開(flatten)して1次元配列に変換する方法

[Javascript] 多次元配列を展開(flatten)して1次元配列に変換する方法

[Javascript] 多次元配列を展開(flatten)して1次元配列に変換する方法

Javascript で flatten

Javascriptにおいて、多次元配列を1次元配列に展開する、いわゆる flatten という処理をしたいのでその方法を調べました。

// これを
const array2d = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

// こう変換したい
const array1d = [1, 2, 3, 4, 5, 6, 7, 8, 9];

上記例は2次元配列の展開ですが、多次元配列でも1次元配列に展開できるように実装します。

サンプルコード

const flatten = (array) => {
    return array.reduce((a, c) => {
        return Array.isArray(c) ? a.concat(flatten(c)) : a.concat(c);
    }, []);
};

// flatten([
//     [1, 2, 3],
//     [4, 5, 6],
//     [7, 8, 9]
// ]);

// [1, 2, 3, 4, 5, 6, 7, 8, 9]

仕組み

reducer 関数を使って、引数で渡された配列の各要素を Array.prototype.concat 関数を使って連結します。多次元配列に対応するために、配列の要素が配列の場合、flatten 関数を再帰的に呼び出し、1次元配列になるまで展開します。配列以外の要素はそのまま連結します。

以上。

Javascriptカテゴリの最新記事