2012-06-09 96 views
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降序上。

感謝

回答

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]] 
+0

感謝tokland,有沒有什麼方法僅獲取值結果來自arr的50以上? – Sri

+1

使用'select'。您應該檢查Array和Enumerable的文檔。 – tokland

+0

非常感謝..將通過文檔 – Sri

4

爲什麼不採取簡單明瞭的路線:

arr.sort.reverse 
# => [[67, 2], [67, 1], [44, 5], [30, 2], [24, 4]]