我有一个像这样的数组
arr = [[24,4], [44,5],[67,1], [30, 2], [67, 2]]
如果我正在使用arr.sort{|a,b| b[0]<=>a[0]}
,我会得到此结果
[[67,1], [67, 2], [44,5], [30, 2], [24,4]] - #[value, id]
如何再次对数组进行排序以实现此结果
[[67,2], [67, 1], [44,5], [30, 2], [24,4]] - #[value, id]
如果有相同的值,那么排序应该在id下降时发生。
谢谢
答案 0 :(得分:4)
为什么不采取简单明了的路线:
arr.sort.reverse
# => [[67, 2], [67, 1], [44, 5], [30, 2], [24, 4]]
答案 1 :(得分:3)
最好使用Enumerable#sort_by
:
arr = [[24,4], [44,5],[67,1], [30, 2], [67, 2]]
arr.sort_by { |x, y| [-x, -y] }
#=> [[67, 2], [67, 1], [44, 5], [30, 2], [24, 4]]