h = array_1.product([array_2]).to_h
#=> {"NY"=>["apple", "banana"], "SF"=>["apple", "banana"],
# "NL"=>["apple", "banana"], "SY"=>["apple", "banana"]}
We were given Array#to_h in MRI v2.0. For earlier versions, use Kernel#Hash:
h = Hash[array_1.product([array_2])]
but beware:
array_2[0] = "cat"
array_2
#=> ["cat", "banana"]
h #=> {"NY"=>["cat", "banana"], "SF"=>["cat", "banana"],
# "NL"=>["cat", "banana"], "SY"=>["cat", "banana"]}
You may instead want:
h = array_1.each_with_object({}) { |str,h| h[str] = array_2.dup }
#=> {"NY"=>["apple", "banana"], "SF"=>["apple", "banana"],
# "NL"=>["apple", "banana"], "SY"=>["apple", "banana"]}
array_2[0] = "cat"
h #=> {"NY"=>["apple", "banana"], "SF"=>["apple", "banana"],
# "NL"=>["apple", "banana"], "SY"=>["apple", "banana"]}
Hashshould look like.