有什么办法可以使用sort_by
,让nil
出现在最前面。
例如
[-1, 2, 3, nil, nil].sort_by &some_block
应该给予
#=> [nil, nil, -1, 2, 3]
类似于this question但那里的解决方案不适用于负值。
最佳答案
您可以使用 Float::INFINITY
如果您的其他值是数字:
[-1, 2, 3, nil, nil].sort_by { |n| n || -Float::INFINITY }
#=> [nil, nil, -1, 2, 3]
另一种写法是:
sort_by { |n| n ? n : -Float::INFINITY }
或更明确地关于nil
:
sort_by { |n| n.nil? ? -Float::INFINITY : n }
关于arrays - 使用 sort_by 排序,nils 出现在前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35744004/