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#map
从Hash
删除:value
条目:
> data.map { |d| d[:value] }.max => "50.0"
请注意,您可能希望使用#to_f
或Float(...)
来避免进行String-String比较,具体取决于您的用例。
克兰兹基答案的缩短版本:
data.map(&:value).max
您还可以对哈希数组进行排序并按索引获取值。
array = array.sort_by {|k| k[:value] }.reverse puts array[0][:value]
如果您还需要最小,第二大等,也很有用。
- 如何通过rails迁移设置Postgres中主键(ID)列的起始点
- 如何在Ruby on rails上做到这一点
- Mongo :: Error :: OperationFailure:E11000重复键错误集合:metalab_development.demands index:sn_1 dup key:{:null}(11000)
- 我应该如何在Ruby on Rails中使用https
- 使用子项存在validationFactory Girl创建父项和子项
- Rails 3.1用于预编译控制器特定JS资产的策略
- 如何在Rails中自动完成HABTM管理?
- 在respond_with哈希中包含虚拟属性
- 将ERB模板转换为SLIM