2010-01-12 71 views
7

多維數組我有以下的數組:排序在紅寶石

[["2010-01-10", 2], ["2010-01-09", 5], ["2009-12-11", 3], ["2009-12-12", 12], ["2009-12-13", 0]]

只想通過每組中的第二值進行排序,並返回最高的國家之一,像我想輸出到使用上面給定的輸入爲12

更新

我想補充一點,我在此爲使用to_a一個數組,從一個哈希值,所以如果有去做相同的哈希那將是更好的。

回答

7

使用此對您的哈希:

hash.values.max 

如果你只需要最高的元素,沒有必要對它進行排序!

+0

我幾乎不好意思問這個問題了。謝謝+1 – 2010-01-12 03:26:21

28

要通過第二個值

x=[["2010-01-10", 2], ["2010-01-09", 5], ["2009-12-11", 3], ["2009-12-12", 12], ["2009-12-13", 0]] 

x.sort_by{|k|k[1]} 
=> [["2009-12-13", 0], ["2010-01-10", 2], ["2009-12-11", 3], ["2010-01-09", 5], ["2009-12-12", 12]] 
+0

只需注意:'sort_by'需要Ruby 1.8.7+ – 2010-01-12 20:31:56

8

調用sort方法對您的哈希對它進行排序排序。

hash = hash.sort { |a, b| b[1] <=> a[1] } 

然後將你的哈希轉換爲一個數組並提取第一個值。

result = hash.to_a[0][1] 
3

如果你想與最大值的鍵值對:

hash.max_by {|key, val| val} # => ["2009-12-12", 12] 

需要Ruby 1.8.7+