rails select 哈希数组的最大值

rails select maximum value from array of 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"}]

我想select散列数组的最大值,我想要的输出就像数据:“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(...) 来避免进行字符串-字符串比较,具体取决于您的用例。

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

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

puts array[0][:value]

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

答案的较短版本:

data.map(&:value).max