Convert array of hashes to array

2019-09-04 02:20发布

问题:

I have an array of hashes from which I need the values of the hashes in a new array. The array of hashes look likes this, with a couple thousand of them.

array = [{:code=>"404"}, {:code=>"302"}, {:code=>"200"}]

I have tried to look this up but have only found out how to convert from a hash.

How would I go about doing this?

回答1:

a=[{:code=>"404"}, {:code=>"302"}, {:code=>"200"}] 
puts a.map{|x|x.values}.flatten.inspect

output

["404", "302", "200"]


回答2:

[{:code=>"404"}, {:code=>"302"}, {:code=>"200"}].flat_map(&:values)
#⇒ ["404", "302", "200"]


回答3:

arr =[{:code=>"404"}, {:code=>"302"}, {:code=>"200"}]

arr.map { |h| h[:code] }
  #=> ["404", "302", "200"]

or, if the name of the key (now :code) might change in future:

arr.map { |h| h.first.last }
  #=> ["404", "302", "200"]


标签: arrays ruby hash