🙄

多重ハッシュから特定の値を取り出す方法(Ruby)

2024/05/29に公開

ハッシュについての記述はこちら
https://zenn.dev/shuto2828/articles/6f576cbb57263a

通常の方法

example.rb
user_data = [
  { name: "John" },
  { name: "Ken" },
  { name: "Rin" },
]

このようなハッシュから各ユーザー名を取得したい場合、変数名[インデックス番号][キー]で取得できます。

puts user_data[0][:name]
puts user_data[1][:name]
puts user_data[2][:name]
# 結果
John
Ken
Rin

しかし記述が冗長です。

each文でループ処理

each文でシンプルに記述できます。

user_data.each do |user|
  puts user[:name]
end

user_data配列の全ての要素に対して同じ処理**(ユーザー名を出力する)**を繰り返します。
各要素をここではuser(任意の名前でOK)と命名しました。

# 結果
John
Ken
Rin

多重ハッシュの場合

example.rb
user_data = [
  { user: { profile: { name: "John" } } },
  { user: { profile: { name: "Ken" } } },
  { user: { profile: { name: "Rin" } } },
]

user:の中にprofile:
profile:の中にname:のハッシュが格納されています。
入れ子構造にアクセスするには、ネストされたキーを順に指定します。

puts user_data[0][:user][:profile][:name]
puts user_data[1][:user][:profile][:name]
puts user_data[2][:user][:profile][:name]
# 結果
John
Ken
Rin

しかしやはり、記述が冗長です。

each文でループ処理

先ほど同様、each文でシンプルにまとめましょう。

user_data.each do |user|
  puts user[:user][:profile][:name]
end

これで配列の中の全ての要素に同じ処理**(ユーザー名を出力する)**を実行できます。

# 結果
John
Ken
Rin

Discussion