Ruby 以相反的顺序按条件对数组进行排序

标签 ruby arrays sorting

<分区>

Possible Duplicate:
Sorting an array in descending order in Ruby

我想根据某些条件对元素数组进行排序,但逆序除外。所以基本上无论它会做什么然后逆转。

例如,我有一个字符串数组,我想通过减少字符串长度对其进行排序

a = ["test", "test2", "s"]
a.sort_by!{|str| str.length}.reverse!

虽然这样做了……有没有一种方法可以指定条件,以便排序算法可以反向执行?

最佳答案

长度是一个数字,所以你可以简单地取反来颠倒顺序:

a.sort_by! { |s| -s.length }

如果您要对不容易否定的内容进行排序,那么您可以使用 sort! 并手动反转比较。例如,通常您会这样做:

# shortest to longest
a.sort! { |a,b| a.length <=> b.length }

但是你可以交换顺序来反转排序:

# longest to shortest
a.sort! { |a,b| b.length <=> a.length }

关于Ruby 以相反的顺序按条件对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222859/

相关文章:

ruby-on-rails - 我的 Rails 迁移无法运行,我无法部署我的 Rails 应用程序。我怎样才能重新开始?

javascript - 使用 haml 在 RoR 中以确认形式运行 Controller 操作

javascript - 解释为什么 Array.sort 这样做

javascript - 使用 javascript 循环 Json 数组得到错误的输出

c++ - 数组和指针作为参数和返回值

java - 对NX3矩阵进行排序(最有效的方法)

ruby - Readline、输入记录分隔符和 Ruby

ruby - 必不可少的 ruby ?

寻找最佳得分组合的算法

MongoDB 排序顺序 - 升序和降序字段的混合