1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby  2重ハッシュを取得する

Posted at

はじめに

今回の内容
・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文を用いることで取得ができる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?