尝试按多个参数排序,但在一个参数升序排序和另一个参数降序排序时遇到问题。
array = [20, 10, 40, 1200, 300]
Run Code Online (Sandbox Code Playgroud)
我需要首先按每个数字降序的位数对数组进行排序。
所以我们得到 [1200, 120, 40, 10, 20]
如果长度之间存在联系,我需要按值对它们进行升序排序
所以我们得到: [1200, 120, 10, 20, 40]
我正在尝试使 sort_by 为此工作,但我无法弄清楚如何对第一个参数进行降序排序和第二个参数升序排序。
def digit_sorter(ar)
ar.sort_by {|num| [num.to_s.length, num]}.reverse
end
Run Code Online (Sandbox Code Playgroud)
我也试过 [ [num.to_s.length], [num].reverse ]