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#map
从 Hash
中删除 :value
条目:
> data.map { |d| d[:value] }.max
=> "50.0"
请注意,您可能希望使用 #to_f
或 Float(...)
来避免进行字符串-字符串比较,具体取决于您的用例。
您还可以对哈希数组进行排序并按索引获取值。
array = array.sort_by {|k| k[:value] }.reverse
puts array[0][:value]
如果您还需要最小值、第二大值等,这很有用。
答案的较短版本:
data.map(&:value).max
我有一个这样的哈希数组,我想取其中的最大值
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#map
从 Hash
中删除 :value
条目:
> data.map { |d| d[:value] }.max
=> "50.0"
请注意,您可能希望使用 #to_f
或 Float(...)
来避免进行字符串-字符串比较,具体取决于您的用例。
您还可以对哈希数组进行排序并按索引获取值。
array = array.sort_by {|k| k[:value] }.reverse
puts array[0][:value]
如果您还需要最小值、第二大值等,这很有用。
data.map(&:value).max