如何根据哈希值中的数组获取哈希?

时间:2013-07-09 16:45:36

标签: ruby

如何根据哈希中的值从数组中获取哈希值?在这种情况下,我想选择得分最低的哈希值potato。我使用Ruby 1.9。

[
  { name: "tomato", score: 9 },
  { name: "potato", score: 3 },
  { name: "carrot", score: 6 }
]

3 个答案:

答案 0 :(得分:5)

您可以使用Enumerable的min_by方法:

ary.min_by {|h| h[:score] } 
#=> { name: "potato", score: "3" }

答案 1 :(得分:1)

我认为你的意图是按数字而不是字符串进行比较。

array.min_by{|h| h[:score].to_i}

修改由于OP改变了问题,答案变为

array.min_by{|h| h[:score]}

现在与Zach Kemp的答案毫无区别。

答案 2 :(得分:1)

Ruby的Enumerable#min_by绝对是要走的路;但是,仅仅是为了踢,这是一个基于Enumerable#reduce的解决方案:

array.reduce({}) do |memo, x|
  min_score = memo[:score]
  (!min_score || (min_score > x[:score])) ? x : memo
end