hsmwhsmw

初心者入門ネストした配列を平滑化する - 配列(Array)クラス - Ruby入門

配列の中の1つの要素として他の配列が含まれる場合に、要素として含まれる配列を展開して平滑化する方法を確認します。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!」メソッドの場合には新しい配列を返すのではなく、対象の配列自身を平滑化した状態に変更します。

サンプルプログラム

実際に試してみます。

LibraryArray12.rb

#! ruby -Ks

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

p ary
p newary

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

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