- Home ›
- Ruby入門 ›
- 配列(Array)クラス
要素に含まれる別の配列を平坦化する(flatten)
Array クラスの flatten メソッドを使用すると、配列の中の 1 つの要素として他の配列が含まれる場合に、要素として含まれる配列を展開して平坦化することができます。ここでは Ruby でネストした配列を平坦化する方法について解説します。
(Last modified: )
要素に含まれる別の配列を平坦化する
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 )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。