💎

RubyのHashオブジェクトについて解説

2021/03/30に公開

Hash とは?

Hash オブジェクトとは key と value の組み合わせでデータを表現できるオブジェクトのことです。

Hash の書き方

Hash は中括弧とコロンを用いて作成します。

irb(main):082:0> user = { name: 'Masuyama' }
=> {:name=>"Masuyama"}

Hash 値の取り出し型

先ほどのようなコロンを用いた記法の場合、key は symbol オブジェクトとなっているので
hash オブジェクトで symbol を指定することで対応する値 (value) を取り出すことができます。

irb(main):083:0> user[:name]
=> "Masuyama"

Hash の書き換え

特定の key を指定して値を代入することで、値を書き換えることもできます。

irb(main):095:0> user = { name: 'Masuyama' }
=> {:name=>"Masuyama"}
irb(main):096:0> user[:name] = 'Yamada'
=> "Yamada"
irb(main):097:0> user[:name]
=> "Yamada"

key の一覧を取得

keys メソッドを使うと key を配列として取得できます。

irb(main):110:0> users = { id: 1, name: 'Masuyama', age
: 29 }
=> {:id=>1, :name=>"Masuyama", :age=>29}
irb(main):111:0> users.keys
=> [:id, :name, :age]

value の一覧を取得

keys と同じく、values メソッドを使うと value を配列として取得できます。

irb(main):112:0> users = { id: 1, name: 'Masuyama', age
: 29 }
=> {:id=>1, :name=>"Masuyama", :age=>29}
irb(main):113:0> users.values
=> [1, "Masuyama", 29]

hash での each メソッド

hash では each メソッドで各要素に対する処理を行うことができます。
hash に each メソッドを使うと、ブロックに key と value の両方が渡されることになります。

irb(main):118:1* users.each do |k, v|
irb(main):119:1*   puts "#{k} = #{v}"
irb(main):120:0> end
id = 1
name = Masuyama
age = 29
=> {:id=>1, :name=>"Masuyama", :age=>29}

hash 値の削除

一部の key, value を削除するには delete メソッドを使います。
このとき、第一引数に削除対象の key を指定します。

irb(main):124:0> users
=> {:id=>1, :name=>"Masuyama", :age=>29}
irb(main):125:0> users.delete(:age)
=> 29
irb(main):126:0> users
=> {:id=>1, :name=>"Masuyama"}

Discussion