hashのバリューを元に並べ替える。
昇順
sort_byにブロックでキーとバリューを与えて、バリューを返してあげると並び替えてくれる。
結果は配列になる。
irb(main):015:0> a={a: 3,b: 2,c: 5,d: 1,e: 5}
=> {:a=>3, :b=>2, :c=>5, :d=>1, :e=>5}
irb(main):016:0> a.sort_by{|a,b| b}
=> [[:d, 1], [:b, 2], [:a, 3], [:e, 5], [:c, 5]]
irb(main):017:0>
降順の場合は、昇順にした後にreverseコマンドで逆順にしてあげる。
こちらも結果は配列になる。
irb(main):017:0> a={a: 3,b: 2,c: 5,d: 1,e: 5}
=> {:a=>3, :b=>2, :c=>5, :d=>1, :e=>5}
irb(main):018:0> a.sort_by{|a,b| b}.reverse
=> [[:c, 5], [:e, 5], [:a, 3], [:b, 2], [:d, 1]]
リンク