Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | ハッシュ | ソート

パンくず

Ruby
ハッシュ
ソート

概要

Rubyのソートについて

構文

以下の構文で、ハッシュからソート済みの二次元配列を取得出来ます。

hash.sort_by {|key, param|param} # =>param順にソート

サンプル

# -*- encoding: utf-8 -*-
require "pp"

class HashContents
  attr_accessor:name
  def initialize(name)
    @name = name
  end
end

hash = {tanaka:HashContents.new("tanaka"),suzuki:HashContents.new("suzuki"),sato:HashContents.new("sato")}
sorted = hash.sort_by {|key, param|param.name}
pp "before:#{hash}" # => ソート前は追加順に並んでいる
pp "after:#{sorted}" # => ソート後はHashContentsのnameフィールドに設定した内容で並んでいる

出力

"before:{:tanaka=>#<HashContents:0x26a2808 @name=\"tanaka\">, :suzuki=>#<HashContents:0x26a27d8 @name=\"suzuki\">, :sato=>#<HashContents:0x26a27a8 @name=\"sato\">}"
"after:[[:sato, #<HashContents:0x26a27a8 @name=\"sato\">], [:suzuki, #<HashContents:0x26a27d8 @name=\"suzuki\">], [:tanaka, #<HashContents:0x26a2808 @name=\"tanaka\">]]"