rails从hash数组中选择最大值

我有一个像这样的哈希数组,我想采取最大的价值

data = [{name: "abc", value: "10.0"}, {name: "def", value: "15.0"}, {name: "ghi", value: "20.0"}, {name: "jkl", value: "50.0"}, {name: "mno", value: "30.0"}] 

我想选择哈希数组的最大值,我想要的输出就像数据:“50.0”

我怎么可能这样做,我试过这个,但它似乎不起作用,只是给我一个错误

 data.select {|x| x.max['value'] } 

任何帮助将非常感激

在Ruby中有很多方法可以做到这一点。 这是两个。 您可以将块传递给Array#max ,如下所示:

  > data.max { |a, b| a[:value] <=> b[:value] }[:value] => "50.0" 

或者您可以使用Array#mapHash删除:value条目:

  > data.map { |d| d[:value] }.max => "50.0" 

请注意,您可能希望使用#to_fFloat(...)来避免进行String-String比较,具体取决于您的用例。

克兰兹基答案的缩短版本:

 data.map(&:value).max 

您还可以对哈希数组进行排序并按索引获取值。

 array = array.sort_by {|k| k[:value] }.reverse puts array[0][:value] 

如果您还需要最小,第二大等,也很有用。