LoginSignup
0
3

More than 3 years have passed since last update.

【Ruby】ハッシュ

Last updated at Posted at 2020-03-07

Hash

オブジェクトが1つである配列に対して、オブジェクトが「キー」と「バリュー」の2つであることが特徴。

fruits = {"apple": "100円", "orange": "80円", "melon": "500"}
p fruits

【実行結果】
{:apple=>"100円", :orange=>"80円", :melon=>"500"}

上記のコードではapple,orengeが「キー(key)」、100円、80円が「バリュー(value)」にあたる。
ハッシュの利点としてはapple=>"100円"の様に各要素に意味やつながりをつけることができる。

Hashの基本機能

Hashの要素を取得する

hash = {ruby:"rails",python:"Django",php:"cakePHP"}
p hash[:ruby]

【実行結果】
"rails"

fetchメソッドでバリューを取り出す

hash = {ruby:"rails",python:"Django",php:"cakePHP"}
p hash.fetch(:ruby)

【実行結果】
"rails"

Hashに要素を追加

hash = {ruby:"rails",python:"Django",php:"cakePHP"}
p hash
hash[:java] = "Spring"
p hash

【実行結果】
{:ruby=>"rails", :python=>"Django", :php=>"cakePHP"}
{:ruby=>"rails", :python=>"Django", :php=>"cakePHP", :java=>"Spring"}

Hashのサイズを取得する

hash = {ruby:"rails",python:"Django",php:"cakePHP"}

【実行結果】
p hash.size
p hash.length

Hashの要素を削除

hash = {ruby:"rails",python:"Django",php:"cakePHP"}
p hash
hash.delete(:ruby)
p hash

【実行結果】
{:ruby=>"rails", :python=>"Django", :php=>"cakePHP"}
{:python=>"Django", :php=>"cakePHP"}

■delete_if、rejectメソッドを使用することで条件を設定して要素を削除できる

hash = {ruby:"rails",python:"Django",php:"cakePHP"}
p hash
hash.delete_if{|key,value| value.size == 6}
p hash
hash.reject!{|key,value| value.size == 7}
p hash

【実行結果】
{:ruby=>"rails", :python=>"Django", :php=>"cakePHP"}
{:ruby=>"rails", :php=>"cakePHP"}
{:ruby=>"rails"}

なお、rejectは!をつけないと破壊的メソッドにはなりません。

Hashの結合

hash1 = {ruby:"rails",php:"cakePHP"}
hash2= {python:"Django",java:"Spring"}
hash3= hash1.merge(hash2)
p hash3

【実行結果】
{:ruby=>"rails", :php=>"cakePHP", :python=>"Django", :java=>"Spring"}

Hashの便利なメソッド

find:Hashの要素を検索する

fruits = { "apple" => 100, "orange" => 80, "melon" => 500 }
p fruits.find {|k,v| k == "apple"}

【実行結果】
["apple", 100]

sort:Hashの要素をソートする

h = { "def" => 2, "ghi" => 1, "abc" => 3 }
p h.sort
p h

【実行結果】
[["abc", 3], ["def", 2], ["ghi", 1]]
{"def"=>2, "ghi"=>1, "abc"=>3}

ハッシュのキーで昇順でソートしたい場合は上記の様に記載する。

each:一括で値を取り出す

hash = { Samurai: 1, Ruby: 2, Rails: 3 , Swift: 4, Java: 5, PHP: 6}
hash.each { |key, value| puts "#{key} => #{value}"}

【実行結果】
Samurai => 1
Ruby => 2
Rails => 3
Swift => 4
Java => 5
PHP => 6
0
3
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
0
3