Как избежать сравнения с nil? Я хочу, чтобы значение ноль, чтобы быть последним элементом при сортировке:Как сделать sort_by значение, когда оно равно
hash.sort_by{|k,v| [v.present? ? v : 99999999]}
Как избежать сравнения с nil? Я хочу, чтобы значение ноль, чтобы быть последним элементом при сортировке:Как сделать sort_by значение, когда оно равно
hash.sort_by{|k,v| [v.present? ? v : 99999999]}
Ваш вопрос не ясен, но, как я понимаю, это должно помочь вам.
#> hash
#=> {:b=>nil, :c=>4, :v=>7}
hash.sort_by { |_,value| value || Float::INFINITY }.to_h
#=> {:c=>4, :v=>7, :b=>nil}
[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]
Приятно, но вы должны вкратце объяснить, что происходит. – Stefan
hash.sort_by{|k,v| [v ? v : 99999999]}.to_h
Но что, если хэш содержит число выше 99,999,999? Он появится после значений «nil». – Stefan
Являются ли эти значения точки целочисленные или плавучие? – Bathsheba
Пожалуйста, добавьте фактический вход и желаемый выход. –
'hash.sort_by {| k, v | v || Float :: INFINITY} .to_h' –