はじめてのRuby!flattenメソッドで多次元配列を一次元配列にする

Rubyには多次元配列やハッシュを1次元配列にするためのflattenメソッドがあります。

  • 結合された多次元配列を1次元配列にしたい
  • ハッシュを1次元配列にしたい

そのような方に向けて、この記事ではflattenメソッドについて以下の内容を解説していきます。


【基礎】flattenメソッドとは
【基礎】flattenメソッドで多次元配列を1次元配列にする
【基礎】flattenメソッドでハッシュを1次元配列にする
【発展】破壊的メソッドflatten!の使い方

この記事ではflattenメソッドについてわかりやすく解説していますので、ぜひ参考にしてください。

flattenメソッドとは

flattenは多次元の配列やハッシュ(Hash)を平坦化(1次元配列)にするためのメソッドです。

flattenの書き方

オブジェクト.flatten
オブジェクト.flatten(階層)

flattenメソッドは多次元の配列、ハッシュを平坦化して値を返します。

引数を指定しない場合は1次元の配列を返します。

引数を指定した場合は何階層目まで平坦化するかを指定できます。

flattenメソッドの使い方

多次元配列を1次元配列にする

まずは多次元配列を1次元配列にする方法を紹介します。

次のサンプルをご覧ください

# 配列を定義
array1 = [1, 2, [3, 4, 5, [6, 7,[8, 9]], 10]]

p "変更前:#{array1}"

# 多次元配列を1次元配列にする
array2 = array1.flatten

p "変更後:#{array2}"

実行結果:

"変更前:[1, 2, [3, 4, 5, [6, 7, [8, 9]], 10]]"
"変更後:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"

このようにflattenメソッドを使用すれば、ややこしい多次元配列も1次元配列に変換できることがわかります。

また、先述したようにflattenは引数を指定することにより、何回層目まで平坦化するかを指定できます。

# 配列を定義
array1 = [1, 2, [3, 4, 5, [6, 7,[8, 9]], 10]]

p "変更前:#{array1}"

# 多次元配列を1次元配列にする
array2 = array1.flatten(2)

p "変更後:#{array2}"

実行結果:

"変更前:[1, 2, [3, 4, 5, [6, 7, [8, 9]], 10]]"
"変更後:[1, 2, 3, 4, 5, 6, 7, [8, 9], 10]"

ハッシュを1次元配列にする

次にflattenメソッドでハッシュを1次元配列にする方法を紹介します。

# ハッシュを定義
hash1 = { "apple" => 100, "orange" => 80, "melon" => 600 }
 
puts "変更前:#{hash1}"
 
# ハッシュを1次元配列にする
hash2= hash1.flatten
 
puts "変更後:#{hash2}"

実行結果:

変更前:{"apple"=>100, "orange"=>80, "melon"=>600}
変更後:["apple", 100, "orange", 80, "melon", 600]

このように多次元配列同様ハッシュに対して、1次元配列に変換することが可能なことがわかりますね!

flatten!の使い方

flattenには対象の配列オブジェクト自身を変更する破壊的メソッドのflatten!も使用できます。

実際に試してみましょう。

# 配列を定義
array = [1, 2, [3, 4, 5, [6, 7,[8, 9]], 10]]

p "変更前:#{array}"

# 多次元配列を1次元配列にする
array.flatten!

p "変更後:#{array}"

実行結果:

"変更前:[1, 2, [3, 4, 5, [6, 7, [8, 9]], 10]]"
"変更後:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"

このように配列オブジェクト自体が変更されていることがわかりますね!

まとめ

この記事では多次元配列やハッシュを1次元配列に変換するflattenメソッドについて、以下の内容を解説しました。

  • flattenメソッドとは
  • flattenメソッドで多次元配列を1次元配列にする
  • flattenメソッドでハッシュを1次元配列にする
  • 破壊的メソッドflatten!の使い方

flattenメソッドは1次元配列に変換したいときに非常に便利ですので、使い方については覚えておきましょう。

もし、flattenメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。