🙄
多重ハッシュから特定の値を取り出す方法(Ruby)
ハッシュについての記述はこちら
通常の方法
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