如何根据散列中的值从数组中获取散列?在这种情况下,我想选择得分最低的哈希,即potato
. 我使用 Ruby 1.9。
[
{ name: "tomato", score: 9 },
{ name: "potato", score: 3 },
{ name: "carrot", score: 6 }
]
如何根据散列中的值从数组中获取散列?在这种情况下,我想选择得分最低的哈希,即potato
. 我使用 Ruby 1.9。
[
{ name: "tomato", score: 9 },
{ name: "potato", score: 3 },
{ name: "carrot", score: 6 }
]
您可以使用 Enumerable 的min_by
方法:
ary.min_by {|h| h[:score] }
#=> { name: "potato", score: "3" }
Ruby'sEnumerable#min_by
绝对是要走的路。但是,只是为了好玩,这里有一个基于以下的解决方案Enumerable#reduce
:
array.reduce({}) do |memo, x|
min_score = memo[:score]
(!min_score || (min_score > x[:score])) ? x : memo
end
我认为您的意图是按数字而不是字符串进行比较。
array.min_by{|h| h[:score].to_i}
编辑由于OP改变了问题,答案就变成了
array.min_by{|h| h[:score]}
现在这与 Zach Kemp 的回答没有区别。