可能重复:
Sorting an array in descending order in Ruby红宝石排序阵列以相反的顺序
我要排序基于一些条件元件的阵列,除了以相反的顺序。基本上,无论它会做什么,然后扭转。
所以,比如我有一个字符串数组,我想通过减少字符串长度
a = ["test", "test2", "s"]
a.sort_by!{|str| str.length}.reverse!
虽然这工作排序它...是否有指定使得分类条件的方式算法会做到相反?
可能重复:
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 }
从@mu答案是太短是伟大的,但只适用于数字。对于一般情况,您可以使用sort
方法:
irb> a = ["foo", "foobar", "test"]
=> ["foo", "foobar", "test"]
irb> a.sort{|a,b| a.length <=> b.length}
=> ["foo", "test", "foobar"]
irb> a.sort{|a,b| b.length <=> a.length}
=> ["foobar", "test", "foo"]
哦,这是一个很好的把戏! – MxyL
+1输入比我快:P – Thilo
性能明智,这是更好的(如果你问我更多的语义):'a.sort_by(&:length).reverse' – Mosselman