2016-12-14 39 views
-4

nilとの比較を避けるにはどうすればよいですか? ソートするとき、私はnilの値は、最後の要素になりたい:nilのときにsort_byの値を与える方法

hash.sort_by{|k,v| [v.present? ? v : 99999999]} 
+0

これらの整数または浮動小数点値はありますか? – Bathsheba

+0

実際の入力と希望する出力を追加してください。 –

+2

'hash.sort_by {| k、v | v || Float :: INFINITY} .to_h' –

答えて

2

あなたの質問は明らかではないが、私は理解して、これはあなたを助ける必要があります。

#> hash 
#=> {:b=>nil, :c=>4, :v=>7} 

hash.sort_by { |_,value| value || Float::INFINITY }.to_h 
#=> {:c=>4, :v=>7, :b=>nil} 
2
[2, 5, 1, nil, 7, 3, nil, nil, 4, 6].sort_by { |i| [i ? 0 : 1, i] } 
#=> [1, 2, 3, 4, 5, 6, 7, nil, nil, nil] 
+2

いいですが、何が起こっているのか簡単に説明してください。 – Stefan

0
hash.sort_by{|k,v| [v ? v : 99999999]}.to_h 
+1

ハッシュに99,999,999以上の数字が含まれているとどうなりますか?それは 'nil'値の後に現れます。 – Stefan