Ruby array of hash. group_by and modify in one line

后端 未结 6 1438
不知归路
不知归路 2020-12-31 04:07

I have an array of hashes, something like

[ {:type=>\"Meat\", :name=>\"one\"}, 
  {:type=>\"Meat\", :name=>\"two\"}, 
  {:type=>\"Fruit\", :n         


        
6条回答
  •  猫巷女王i
    2020-12-31 04:45

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

    Following steenslag's suggestion:

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

提交回复
热议问题