見出し画像

【問題】二重ハッシュ

配列の内部に、複数のユーザーの情報をハッシュとして持つ変数user_dataがあります。

user_data = [
 {user: {profile: {name: 'George'}}},
 {user: {profile: {name: 'Alice'}}},
 {user: {profile: {name: 'Taro'}}},
]

user_dataを利用して、全てのユーザーの名前だけが出力されるようにRubyでコーディングしなさい。
ただし、出力結果は次のようになるものとする。

George
Alice
Taro


【解説】
二重ハッシュから特定の値を取得する場合は、取得したい値のキーまで連続して指定すると取得できます。

ハッシュ[取得したい値のキー][取得したい値のキー]

今回取得したい値は、George, Alice, Taroという値です。
よって、取得したい値に対応するキーはnameというキーだということが分かります。

ハッシュ[:user][:profile][:name]

配列の中にハッシュが格納されており、each文でハッシュの1つ1つを取り出した上で、上記の記述を行うことが必要です。

【回答】

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

digメソッドを用いても取得できるみたい🧐
多重階層にあるハッシュの値をまとめて取得できるんだって勉強になりました😌
↓digメソッドを使用した回答

user_data.each{ |u| puts u.dig(:user, :profile, :name) }

シンプルにまとめられていい!

いいなと思ったら応援しよう!