2011-09-27 8 views
7

存在しない場合でも、私はちょうどルビー:ソートハッシュの配列、キーはRailsアプリケーションで

array_of_hashes.sort_by { |hash| hash[:key_to_sort] } 

で簡単に並べ替えることができますハッシュの配列を持っていますが、どのような場合ではないすべてのアレイメンバーは、Aはキー:key_to_sort?次に、ソートは "stringとnilとの比較に失敗しました"というエラーになります。並べ替えを続行する方法はありますか?あるいは、これを行う別の方法がありますか?

答えて

11

ハッシュにソートキーがないときに実行する操作が異なります。ニース**

arr.sort_by { |h| h[:key_to_sort] || REALLY_SMALL_OR_LARGE_VALUE } 
+0

**:)

arr.delete_if { |h| h[:key_to_sort].nil? }.sort_by { |h| h[:key_to_sort] } 

2のソートからハッシュを除外する)配列の先頭/末尾にハッシュを置く:私は2つのシナリオを想像することができます。このような場合にハッシュを最初/最後に移動することは、私が思っていたことであり、やり方が分からなかっただけです。アルファベットの場合は、欠損値を上にするために '' A ''を使用しました。 –

+0

ああ、+1はハッシュを除外するオプションを説明するためのものです。 –

+2

うれしい私は助けることができました。 IMHO小さな文字列値には "A"よりも ""(空の文字列)を使用する方が良いでしょう。 –

関連する問題