Reputation: 335
I need to retrieve some values from a nested hash array like this:
{:id=>1, :field_id=>200, :name=>"01", :midpoint=>{:lat=>"37.716801", :lng=>"-120.604216"}}
{:id=>2, :field_id=>201, :name=>"02", :midpoint=>{:lat=>"37.717551", :lng=>"-120.608567"}}
{:id=>3, :field_id=>202, :name=>"03", :midpoint=>{:lat=>"37.714297", :lng=>"-120.612967"}}
{:id=>4, :field_id=>203, :name=>"04", :midpoint=>{:lat=>"37.714591", :lng=>"-120.615368"}}
{:id=>5, :field_id=>204, :name=>"05", :midpoint=>{:lat=>"37.710421", :lng=>"-120.616498"}}
I am able to get an array of values for one key using hash.map() like this:
idArray = inputHash.map { |k| k[:id]}
However I want to get (a hash of) [:name] and [:id]. Something like this:
{:id=>1, :field_id=>200}
{:id=>2, :field_id=>201}
{:id=>3, :field_id=>202}
{:id=>4, :field_id=>203}
{:id=>5, :field_id=>204}
Upvotes: 1
Views: 73
Reputation: 118261
You should do :
array_of_hash.collect { |h| { id: h[:id], field_id: h[:field_id] } }
Upvotes: 0
Reputation: 1535
Try -
idArray = inputHash.map { |k| {:id => k[:id], :field_id => k[:field_id]}}
Upvotes: 2