2016-12-14 1 views
-4

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

관련 문제