ruby多维数组排序

时间:2012-06-09 12:20:09

标签: ruby arrays sorting

我有一个像这样的数组

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下降时发生。

谢谢

2 个答案:

答案 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]]