0
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・初心者】ハッシュとは自分用

Last updated at Posted at 2020-05-05

##ハッシュとは?

小さなデータの集まり。

番号ではなくキー(テキスト)と呼ばれるデータを扱うことによって管理できる。→配列との違い。配列はインデックスと呼ばれる番号を指定して管理する。
ハッシュは複数のデータをまとめて扱う。

###見方

キー、ハッシュの順です。

hash_sample = ["キー" => "ハッシュ","キー" => "ハッシュ","キー" => "ハッシュ","キー" => "ハッシュ",]
#こんな感じで省略可能↓
hash_sample = [キー:"ハッシュ",キー:"ハッシュ",キー:"ハッシュ",キー:"ハッシュ",キー:"ハッシュ",キー:"ハッシュ"]

##ハッシュの機能
###番号ではなくキー(テキスト)を指定してデータを取り出せる。

hash_sample = ["ああ"、"いい"、"うう"]   #ああ、いい、ううがキー
puts hash_sample["ああ"]    =>"ああ"        #ああを直接指定して取り出せる。

###キーを変数で定義しても取り出せる。

hash_sample = ["ああ"、"いい"、"うう"]   #ああ、いい、ううがキー
n = いい 
puts hash_sample[n]     =>"いい"       #いいを取り出せる。

###lengthメソッドを使ってデータの個数を指定できる。

hash_sample = ["ああ"、"いい"、"うう"]   #ああ、いい、ううがキー
puts hash_sample.length     =>3     #hash_sampleのデータの個数を出力できる。

###簡単にデータの追加、データの更新、データの削除ができる。

####追加

enemies = {"ザコ" => "スライム", "中ボス" => "ドラゴン", "ラスボス" => "魔王"}
enemies["ザコ2"] = "メタルモンスター"  #ハッシュを追加
p enemies      <=  {"ザコ" => "スライム", "中ボス" => "ドラゴン", "ラスボス" => "魔王","ザコ2" => "メタルモンスター"}

####更新

enemies = {"ザコ" => "スライム", "中ボス" => "ドラゴン", "ラスボス" => "魔王"}
enemies["中ボス"] = "レッドドラゴン"  #ハッシュを更新
puts enemies.length  =>  {"ザコ" => "スライム", "中ボス" => "レッドドラゴン", "ラスボス" => "魔王"}

####削除

削除の場合は[]ではなく()でくくる。

enemies = {"ザコ" => "スライム", "中ボス" => "ドラゴン", "ラスボス" => "魔王"}
enemies.delete("ザコ")            ##ハッシュを削除
p enemies      => {"中ボス" => "ドラゴン", "ラスボス" => "魔王"}

##ハッシュの使い所

###データベースとやり取りするデータの処理
横(レコード)を取り出したい際はハッシュで処理すると楽。
縦列を取り出したい際には配列が楽。

Left align Right align Center align
This This This
column column column
will will will
be be be
left right center
aligned aligned aligned

###APIとやり取りするデータの処理

##ハッシュをループ処理で取り出す方法

###ハッシュの場合はeach_valueメソッドを使う。

skills = {"職業" => "戦士", "体力" => 100, "魔法力" => 200, "ゴールド" => 380}
skills.each_value do |skill|
    puts "#{skill}" 
end

###each_valueメソッドで変数を複数指定した場合

skills = {"職業" => "戦士", "体力" => 100, "魔法力" => 200, "ゴールド" => 380}
skills.each_value do |skill,n|
    puts "#{skill}は#{n}です"
end

###each_valueメソッドでハッシュの値の合計を計算して出力する場合

points = {"国語" => 70, "算数" => 35, "英語" => 52}
sum = 0
points.each_value do |point|
    sum += point
end
puts sum

##ハッシュをソート(整列)させる

###値でソートさせる

apples = [310, 322, 292, 288, 300, 346]
p apples.sort    

###値を逆順にソートさせる

apples = [310, 322, 292, 288, 300, 346]
p apples.sort.reverse

###ソートの順番について
ハッシュの先頭のアルファベット、数字で決まる。
漢字が含まれている場合あらかじめ決められている順番になる。

###キーでソートする場合には.to_hメソッドを使う。

to_hメソッド・・・配列をハッシュに変換するメソッド。

math = {"えんどう" => 99, "あだち" => 40, "いいだ" => 12}
p math.sort.to_h

###値(ハッシュ)でソートする

aがキー、bがハッシュでbを選んでいる。

math = {"あだち" => 40, "いいだ" => 12, "えんどう" => 99}
p math.sort_by {|a,b| b }

##シンボルの使い方

シンボルとはコロン:をつけて""なしで表示されているもの。記述が簡単になる。

0
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
0
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?