如何根据哈希中的值从数组中获取哈希值?在这种情况下,我想选择得分最低的哈希值potato
。我使用Ruby 1.9。
[
{ name: "tomato", score: 9 },
{ name: "potato", score: 3 },
{ name: "carrot", score: 6 }
]
答案 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