0

我有一个这样的数组

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 descending 上。

谢谢

4

2 回答 2

4

为什么不走简单明了的路线:

arr.sort.reverse
# => [[67, 2], [67, 1], [44, 5], [30, 2], [24, 4]]
于 2012-06-09T15:34:37.057 回答
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]]
于 2012-06-09T12:29:49.577 回答