̃Gg[͂ĂȃubN}[Nɒlj

Ruby :: 配列・ハッシュのsort(ソート)



配列・ハッシュの並べ替え…

配列

配列のソート(昇順)

a = ["Red", "Red", "Blue", "Green"]
p a.sort!
⇒ ["Blue", "Green", "Red", "Red"]

配列のソート(降順)

a = ["Red", "Red", "Blue", "Green"]
p a.sort.reverse!
⇒ ["Red", "Red", "Green", "Blue"]


ハッシュ

ハッシュをキーでソート

h = {"a" => "Red", "b" => "Red", "c" => "Blue", "d" => "Green"}
p h.sort_by{|key,val| key}[["a", "Red"], ["b", "Red"], ["c", "Blue"], ["d", "Green"]]

ハッシュを値でソート(昇順)

h = {"a" => "Red", "b" => "Red", "c" => "Blue", "d" => "Green"}
p h.sort_by{|key,val| val}[["c", "Blue"], ["d", "Green"], ["b", "Red"], ["a", "Red"]]

ハッシュを値でソート(降順)

h = {"a" => 10, "b" => 11, "c" => 1, "d" => 5}
p h.sort_by{|key,val| -val}[["b", 11], ["a", 10], ["d", 5], ["c", 1]]
※. 値が数値の場合のみ有効

ハッシュを値、キーの順でソート

h = {"a" => "Red", "b" => "Red", "c" => "Blue", "d" => "Green"}
p h.sort_by{|key,val| [val, key]}[["c", "Blue"], ["d", "Green"], ["a", "Red"], ["b", "Red"]]
 
なお、sort_by メソッドには、破壊的メソッドはありません。
「sort_by!」はエラーになります。



programming/ruby/etc/sort.txt