:reference
の値に基づいてソートしたいハッシュの配列があります。しかし、配列内のいくつかの要素には:reference
キーがないため、ソートすることはできません。このフィールドを無視し、このキーを含むハッシュ要素を並べ替える方法はありますか?ruby sorting hashes inside array
私は、次のアプローチを試みたが、私は正しい出力は次のようになります。引数エラーに
ArgumentError: comparison of NilClass with String failed
sort_by at org/jruby/RubyEnumerable.java:503
arr1 = [{:reference=> "F123",
:name=> "test4"
},
{
:reference=> "ZA4",
:name=> "test3"
},
{
:reference=> "A43",
:name=> "test2"
},
{
:name=> "test1"
},
{
:name=> "homework1"
}]
arr1 = arr1.sort_by { |hash| hash[:reference] }
puts arr1
を取得しています:
=> arr1= [
{:reference=>"A43", :name=>"test2"},
{:reference=>"F123", :name=>"test4"},
{:reference=>"ZA4", :name=>"test3"},
{:name=> "test1"},
{:name=> "homework1"}
]
はあなたに感謝します。 ':reference'キーのないハッシュが配列の最後に来るように配列をソートする方法はありますか? – danynl
私は、ソートに2番目の要素を追加して強制的に元に戻す方法を追加しました。配列は、最初の要素*、* 2番目の要素に基づいてソートされているので、これを行う便利な方法です。 – tadman
最後の行に '.to_s'は必要ありません。文字列は 'nil'と' nil <=> nil#=> 0'とは決して比較されません。 –