【发布时间】:2018-04-07 00:50:18
【问题描述】:
在这里给出这个哈希数组:
arr = [{:question_type=>"Fire", :total=>0.0}, {:question_type=>"Water", :total=>0.0}, {:question_type=>"Metal", :total=>0.0}, {:question_type=>"Earth", :total=>0.0}, {:question_type=>"Wood", :total=>100.0}]
我想为总键选择具有最高值的散列。 所以下面的代码似乎可以完成工作
max = arr.max_by{|x| x[:total]}
puts max[:question_type]
#=> Wood
但是,如果我有 2 个具有相同值的哈希,它将只返回第一个
arr2 = [{:question_type=>"Fire", :total=>0.0}, {:question_type=>"Water", :total=>0.0}, {:question_type=>"Metal", :total=>0.0}, {:question_type=>"Earth", :total=>50.0}, {:question_type=>"Wood", :total=>50.0}]
max = arr2.max_by{|x| x[:total]} #it should be arr2
puts max[:question_type]
#=> Earth
如果两者都是最大值,那么让它返回 Earth 和 Wood 的最佳方法是什么?
【问题讨论】:
-
使用
inject构建一个最大值数组。 -
@seancdavis 如果您认为某个问题重复,请标记它。
标签: ruby-on-rails arrays ruby