Reputation: 89
I have a current hash:
{
"2018-03-12"=>[{:date=>"2018-03-12", :net_revenue=>0.044}],
"2018-03-11"=>[{:date=>"2018-03-11", :net_revenue=>0.033}],
"2018-03-10"=>[{:date=>"2018-03-10", :net_revenue=>298.860}]
}
How do I make it look like this?
{
"2018-03-12"=>{:date=>"2018-03-12", :net_revenue=>0.044},
"2018-03-11"=>{:date=>"2018-03-11", :net_revenue=>206.008},
"2018-03-10"=>{:date=>"2018-03-10", :net_revenue=>298.860}
}
Upvotes: 0
Views: 39
Reputation: 68
Other than making sure the data comes in the way you want it,
hash.each do |key, val|
hash[key] = val.first
end
Upvotes: 0
Reputation: 230541
As simple as
hash.transform_values(&:first)
(ruby 2.4 and later)
Upvotes: 4
Reputation: 5905
hash = {
"2018-03-12"=>[{:date=>"2018-03-12", :net_revenue=>0.044}],
"2018-03-11"=>[{:date=>"2018-03-11", :net_revenue=>0.033}],
"2018-03-10"=>[{:date=>"2018-03-10", :net_revenue=>298.860}]
}
new_hash = hash.each { |k, v| hash[k] = v[0] }
The new_hash will look like:
new_hash = {
"2018-03-12"=>{:date=>"2018-03-12", :net_revenue=>0.044},
"2018-03-11"=>{:date=>"2018-03-11", :net_revenue=>0.033},
"2018-03-10"=>{:date=>"2018-03-10", :net_revenue=>298.860}
}
Upvotes: 1