2017-06-27 2 views
-1

私はRailsのコントローラで作成され、次のハッシュを持っている:Rubyで配列を並べ替えるには?どちらがより効果的ですか?

myObject = [] 
.... 
users.each do |u| 
    myObject << { 
    user_id: u.id, 
    display_name: u.display_name, 
    points: u.logs.sum(:points) 
    } 
end 

私は一種のポイント、ハイ>低によりMyObjectにするにはどうすればよいですか?

おかげ

+1

ご質問は不明です。タイトルでは、「Rubyでハッシュをソートする方法」を尋ねます。質問では、「私は次のハッシュを持っています...」と書いています。しかし、最後の文では、「どのように 'myObject'をソートできますか?」という質問がありますが、myObjectは配列であり、ハッシュではありません。では、ハッシュや配列の並べ替えについて質問していますか?また、Rubyのドキュメントで答えが見つからなかった理由を説明できれば、Ruby開発者はドキュメントを改善して、再び起こらないようにすることができます。 –

答えて

1

はちょうどあなたのmyObjectアレイ上sort_by!を使用します。

myObject = [] 

users.sort_by { |user| user }.each do |u| 
    myObject << { 
    user_id: u.id, 
    display_name: u.display_name, 
    points: u.logs.sum(:points) 
    } 
end 

myObject.sort_by! { |user| user[:points] } 

あなたが逆の順序でする場合は、reverse!を呼び出す:

また
myObject.sort_by! { |user| user[:points] }.reverse! 

、あなたがsort!を使用して、それを並べ替えることができます:

myObject.sort! do |user1, user2| 
    user2[:points] <=> user1[:points] 
end 

変更比較オブジェクトの順序を逆の順序でそれをしたい場合:

myObject.sort! do |user1, user2| 
    user1[:points] <=> user2[:points] 
end 
+0

これ以上の演技はありますか? – AnApprentice

+2

あなたのデータセットであなたのコンピュータ上で走ったときにどれがよりパフォーマンスが良いかを知る唯一の方法は、あなたのデータセットを使ってあなたのコンピュータ上でそれを実行し、どちらがより効果的かを見ることです。また、 "より多くの演技者"を定義する必要があります、あなたはどういう意味ですか?スループット?レイテンシ?コールドキャッシュ?ウォームキャッシュ?定常状態?ジッター? –

+0

'sort! 'を使用すると、間違った方向にソートされてしまいます。低から高へ、高を低くする – AnApprentice

関連する問題