要素に含まれる別の配列を平坦化する(flatten)

Array クラスの flatten メソッドを使用すると、配列の中の 1 つの要素として他の配列が含まれる場合に、要素として含まれる配列を展開して平坦化することができます。ここでは Ruby でネストした配列を平坦化する方法について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 12 日更新)

要素に含まれる別の配列を平坦化する

Array クラスで用意されている flatten メソッドを使用すると要素の中に別の配列が含まれる場合に平坦化することができます。

Arrayオブジェクト.flatten

flatten メソッドは配列に含まれる配列を全て展開した新しい配列を返します。

具体的には次のように考えて下さい。

ary = [1, 2, [3, 4, 5], 6, 7]

上記のような配列を考えてみます。この配列では要素として「1」「2」「[3, 4, 5]」「6」「7」と言う5つの要素を持っています。この配列に対して flatten メソッドを実行すると配列の中に含まれる他の配列を展開します。

ary = [1, 2, [3, 4, 5], 6, 7]
newary = ary.flatten

結果として配列「newary」は次のような配列となります。

[1, 2, 3, 4, 5, 6, 7]

なお、このメソッドは再帰的に動作しますので配列の中に含まれる配列が、さらに要素として配列を持っていたとしても全て平滑化して表示します。

また flatten メソッドには flatten! メソッドも用意されています。

Arrayオブジェクト.flatten!

flatten! メソッドの場合には新しい配列を返すのではなく、対象の配列自身を平滑化した状態に変更します。

サンプルコード

実際に試してみます。

# encoding: UTF-8

ary = [1, 2, [3, 4, [5, 6, 7]], 8, 9]
newary = ary.flatten

p ary
p newary

実行結果は次のようになります。

ネストした配列を平滑化する

-- --

Ruby でネストした配列を平坦化する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。