rails从hash数组中选择最大值

azy*_*azy 4 arrays hash ruby-on-rails

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

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"}]
Run Code Online (Sandbox Code Playgroud)

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

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

data.select {|x| x.max['value'] }
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激

kra*_*zky 10

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

  > data.max { |a, b| a[:value] <=> b[:value] }[:value]
   => "50.0"
Run Code Online (Sandbox Code Playgroud)

或者您可以使用Array#map以下:value内容来删除条目Hash:

  > data.map { |d| d[:value] }.max
   => "50.0"
Run Code Online (Sandbox Code Playgroud)

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