はじめに
今回の内容
・2重ハッシュの取得方法
・digメソッド
2重ハッシュを簡単に取得する方法と、それぞれの特徴について書きました。
結論
結論: 多重層階となる値はdigメソッドの方が扱いやすい。
以下で説明させていただきます。
取得方法
hash = {user: {profile:{name: 'user_name'}}}
# ハッシュの出力結果↓
{:user=>{:profile=>{:name=>"user_name"}}}
今回は上記のハッシュを取得します。
puts hash[:user][:profile][:name] #①
puts hash.dig(:user, :profile, :name) #②
# user_name
取得するためにはハッシュの変数名とキーを特定のキーまで連続して記述することで取得することが可能になります。
①様にすることで取得が可能になりました。
もう一つ取得する方法があります。それはrubyが標準で用意しているdigメソッドです。
②メソッドは多重階層にあるハッシュの値をまとめて取得することができるメソッドです。
app_data = [
{web: {app: {name: 'facebook'}}},
{web: {app: {name: 'twitter'}}},
{web: {app: {name: 'instagram'}}},
]
puts app_data.dig(0, :web, :app, :name)
# facebook
app_data.each do |p|
puts p[:web][:app][:name]
end
# facebook
# twitter
# instagram
digメソッドは配列の中にあるハッシュも取得することができます。digメソッドは複数のハッシュの値をより特定して取得をすることが可能になります。特定の値を複数連続して取得する場合はeach文を用いて取得することができます。
まとめ
2重ハッシュを取得する時は
・キーを連続して指定する。
・digメソッドを使用する
配列の中にあるハッシュを取得する時は、
・each文を用いて取得することができる。
・指定した値が複数あれば複数取得するとになる。
digメソッドを使用すると、
・特定した中の特定の値を取得する。
・複数取得するにはeach文を用いることで取得ができる。