I want to map an arbitrary Ruby Array to a Hash.
Input:
['bar1', 'bar2', 'bar3']
(The array will have between zero and three elements.)
Output:
{ foo1: 'bar1', foo2: 'bar2', foo3: 'bar3' }
I'm looking for the most elegant solution.
I want to map an arbitrary Ruby Array to a Hash.
Input:
['bar1', 'bar2', 'bar3']
(The array will have between zero and three elements.)
Output:
{ foo1: 'bar1', foo2: 'bar2', foo3: 'bar3' }
I'm looking for the most elegant solution.
Use #zip.
foo.zip(bar).to_h
irb(main):003:0> [:foo1, :foo2, :foo3].zip(['bar1', 'bar2', 'bar3']).to_h
=> {:foo1=>"bar1", :foo2=>"bar2", :foo3=>"bar3"}
irb(main):004:0> b=['bar1', 'bar2', 'bar3']
=> ["bar1", "bar2", "bar3"]
irb(main):005:0> f=[:foo1, :foo2, :foo3]
=> [:foo1, :foo2, :foo3]
irb(main):006:0> f.zip(b).to_h
=> {:foo1=>"bar1", :foo2=>"bar2", :foo3=>"bar3"}
irb(main):007:0> f.zip(b[0..2]).to_h
=> {:foo1=>"bar1", :foo2=>"bar2", :foo3=>"bar3"}
irb(main):009:0> f.zip(b[0..1]).to_h
=> {:foo1=>"bar1", :foo2=>"bar2", :foo3=>nil}
irb(main):010:0> f.zip(b[0..0]).to_h
=> {:foo1=>"bar1", :foo2=>nil, :foo3=>nil}
irb(main):011:0> f.zip([]).to_h
=> {:foo1=>nil, :foo2=>nil, :foo3=>nil}