2010-12-12 15 views
0

私はこのようになりますハッシュの配列があります2次配列の文字列を使用してこの配列のハッシュをソートするにはどうすればよいですか?

user_array = [<#Hashie::Mash id="1" name="Ben">, <#Hashie::Mash id="2" name="Scott">, <#Hashie::Mash id="3" name="David">] 

をそして私はまた、IDを含む配列は、外部ソースから引っ張ってきた:私はuser_arrayを注文するfreq_arrayを使用する必要が

freq_array = ["1","2","2","3","2","3"] 

IDがfreq_arrayで最も多く表示されるユーザーは、user_arrayに最初に入ります。したがって、上記のfreq_arrayに基づいて、user_array

user_array = [<#Hashie::Mash id="2" name="Scott">, <#Hashie::Mash id="3" name="David">, <#Hashie::Mash id="1" name="Ben">] 

これを行うための最善の方法は何でしょうか?読んでくれてありがとう。

編集:user_arrayハッシュのフォーマットが間違っています。修正しました。

答えて

5
user_array.sort_by { |user| freq_array.count(user["id"]) * -1 } 
+2

'user_array.sort_by {| user | -freq_array.count(user ["id"])} ' – Nakilon

+1

の方が短い;)私はもっと読みやすくすることもできる:' user_array.sort_by {| user | freq_array.count(user ["id"])} .reverse'これは遅いですが、何が起こっているのかがはっきりしています – iain

+0

回答者に感謝します。カウントは正常に機能していますが、user_arrayは実際には全く注文されていません。私は、user_arrayの各エントリが、実際に私が質問で示した方法とは少し違っていることに気付きました。私はこれを反映するために質問を編集しました。 – ben

関連する問題