arrays - 使用 sort_by 排序,nils 出现在前面

标签 arrays ruby sorting

有什么办法可以使用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/

相关文章:

arrays - 将数值数组映射到第二个数值数组

arrays - 用于将数据从单元格复制到数组的 VBA 循环

ruby - 如何在haml中使用循环内的变量?

c# - 从列表中获取新的排序列表,我只需要 x 个项目并且不想在获取顶部项目之前对整个列表进行排序

javascript - 通过键盘对 Google Charts 表格进行排序

java 声明一个泛型数组

c++ - 将所有数组元素相加

ruby - 没有 Rails 的 ActionMailer - 未获取 View

ruby-on-rails - 从 Rspec 中的 Mailer 获取实例变量

string - 在 MATLAB 中对字符串进行排序,如 Windows 7 在资源管理器中对文件名进行排序(尊重数字中间字符串)