在ruby中排序多维数组
我有以下数组:
[["2010-01-10", 2], ["2010-01-09", 5], ["2009-12-11", 3], ["2009-12-12", 12], ["2009-12-13", 0]]
我只想按每组中的第二个值对其进行排序并返回最高值,就像我希望输出为12
而上面给定的输入。
更新
我可能会补充一点,我使用to_a
从一个哈希to_a
它变成一个数组,所以如果要用哈希做同样的事情会更好。
在你的哈希上使用它:
hash.values.max
如果您只需要最高元素,则无需对其进行排序!
按第二个值排序
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]]
在哈希上调用sort
方法对其进行排序。
hash = hash.sort { |a, b| b[1] <=> a[1] }
然后将您的哈希值转换为数组并提取第一个值。
result = hash.to_a[0][1]
如果您希望键值对具有最大值:
hash.max_by {|key, val| val} # => ["2009-12-12", 12]
需要Ruby 1.8.7+