我有一个散列数组,类似于
[ {: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/