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