今日も復習でアウトプットします!
問題.
配列の内部に、複数のユーザーの情報をハッシュとして持つ変数のname値を出力せよ。出力結果は次のようになるものとする。
book_data = [
{book: {item: {name: 'ten'}}},
{book: {item: {name: 'chi'}}},
{book: {item: {name: 'nodo'}}},
]
出力結果
ten
chi
nodo
解答
book_date.each do |n|
puts n[:book][:item][:name]
end
解説
ハッシュから特定の値を取得する場合は、その値に対応するキーを指定。
二重ハッシュから特定の値を取得する場合は、取得したい値のキーまで連続して指定すると取得可能。
取得方法
ハッシュ[取得したい値のキー]
#二重ハッシュ
ハッシュ[取得したい値のキー][取得したい値のキー]
#今回はname値取得のため下記となる
ハッシュ[:book][:item][:name]
応用で、digメソッドを用いても取得できる。
「digメソッドとは?』
Rubyに標準で組み込まれているメソッドで、多重階層にあるハッシュの値をまとめて取得できる。
解答
user_data.each{ |n| puts u.dig(:book, :item, :name) }
綺麗なのはdigなのかな。