ruby-on-rails - Ruby 哈希数组。 group_by 一行修改

标签 ruby-on-rails ruby hash enumerable

我有一个散列数组,类似于

[ {:type=>"Meat", :name=>"one"}, 
  {:type=>"Meat", :name=>"two"}, 
  {:type=>"Fruit", :name=>"four"} ]

我想把它转换成这个

{ "Meat" => ["one", "two"], "Fruit" => ["Four"]}

我尝试了 group_by 但后来我得到了这个

{ "Meat" => [{:type=>"Meat", :name=>"one"}, {:type=>"Meat", :name=>"two"}],
  "Fruit" => [{:type=>"Fruit", :name=>"four"}] }

然后我不能修改它只留下名称而不是完整的哈希值。我需要在一行中执行此操作,因为它适用于 Rails 表单上的 grouped_options_for_select

最佳答案

array.group_by{|h| h[:type]}.each{|_, v| v.replace(v.map{|h| h[:name]})}
# => {"Meat"=>["one", "two"], "Fruit"=>["four"]}

按照 steenslag 的建议:

array.group_by{|h| h[:type]}.each{|_, v| v.map!{|h| h[:name]}}
# => {"Meat"=>["one", "two"], "Fruit"=>["four"]}

关于ruby-on-rails - Ruby 哈希数组。 group_by 一行修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18920877/

相关文章:

ruby-on-rails - ELK stack + Filebeat 收集Rails日志

php - 什么方法是散列密码的最佳方法?

algorithm - 文本编辑器中的前 3 个字数

ruby - 没有路由匹配 Controller

ruby - 无法在 rails 3 上显示哈希

ruby-on-rails - 当我进行测试时,test_helper 不加载

ruby-on-rails - Spree Commerce - 按 sku 搜索订单

ruby-on-rails - Rails 急切加载,可能的错误

ruby - 如何为包含可比较的类定义哈希函数?

ruby - require 是否应该始终位于代码的顶部(Ruby)?