首页 文章

在ruby中排序多维数组

提问于
浏览
7

我有以下数组:

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

我只想按每组中的第二个值对其进行排序并返回最高值,就像我希望输出为 12 ,上面给定的输入 .

update

我可以补充一点,我使用 to_a 从一个哈希中将它变成了一个数组,所以如果有一个哈希会做得更好,那就更好了 .

4 回答

  • 7

    按第二个值排序

    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]]
    
  • 28

    在哈希上调用 sort 方法对其进行排序 .

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

    然后将您的哈希值转换为数组并提取第一个值 .

    result = hash.to_a[0][1]
    
  • 8

    在你的哈希上使用它:

    hash.values.max
    

    如果您只需要最高元素,则无需对其进行排序!

  • 3

    如果您希望键值对具有最大值:

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

    需要Ruby 1.8.7

相关问题