【问题标题】:how to do sort_by value when it's nil当它为 nil 时如何做 sort_by 值
【发布时间】:2016-12-14 09:57:02
【问题描述】:

如何避免与 nil 比较? 我希望 nil 值是排序时的最后一个元素:

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

【问题讨论】:

  • 这些是整数还是浮点数?
  • 请添加实际输入和所需输出。
  • hash.sort_by { |k,v| v || Float::INFINITY }.to_h

标签: ruby-on-rails ruby sorting ruby-on-rails-4


【解决方案1】:

您的问题不清楚,但据我了解,这应该对您有所帮助。

#> 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]
    

    【讨论】:

    • 很好,但您应该简要解释一下发生了什么。
    【解决方案3】:
     hash.sort_by{|k,v| [v ? v : 99999999]}.to_h
    

    【讨论】:

    • 但是如果散列包含一个大于 99,999,999 的数字怎么办?它会出现在nil 值之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多