/ /多次元配列をrubyでソートする - ルビ、ソート、ハッシュ

ruby-ruby、sorting、hashを使った多次元配列のソート

多次元の並べ替えに問題がある私は配列/ハッシュまたは両方を持っていますか?(私はC / PHP / Javaのバックグラウンドから来ていると私に言い訳をしています。これは初めてRubyを使っています)

user["shapeshifter"] = {age => "25", country => "Australia"}
user["user2"] = {age => "29", country => "Australia"}
user["user3"] = {age => "21", country => "Russia"}

私は年齢に基づいてユーザー配列をソートしたい。

回答:

回答№1は4

ソートされたハッシュ、IIRCの場合、ハッシュのハッシュとルビ1.9.2が必要です。これは、 キーでハッシュをソートし、Rubyでハッシュを返します

あなたのテストケースを仮定し、それが有効であるように修正しました:

user = {}
user["shapeshifter"] = {:age => 25, :country => "Australia"}
user["user2"] = {:age => 29, :country => "Australia"}
user["user3"] = {:age => 21, :country => "Russia"}

それが必要なのは次のとおりです。

user.sort_by {|key,value| value[:age]}

回答№2の場合は1

現在、ruby 1.9はハッシュを注文していますが、まだ並べ替え機能はありません。

ペアの配列をソートし、新しいハッシュを作成することができます。 このような

user = {}
user["shapeshifter"] = {:age => "25", :country => "Australia"}
user["user2"] = {:age => "29", :country => "Australia"}
user["user3"] = {:age => "21", :country => "Russia"}

result1 = user.sort { |user1, user2|
user1[1][:key] <=> user2[1][:key] # user1,2 = [key, value] from hash
}
puts Hash[result1].inspect

or this

result2 = user.sort_by { |user_key, user_val|
user_val[:key]
}
puts Hash[result2].inspect