2013-09-19 2 views
1

У меня есть следующие два массива:Construct хэш с помощью двух массивов рубин

["first_name", "last_name", "email_id", "company"] 
["Andy", "Martin", "[email protected]", nil] 

Мне нужно, чтобы построить это как хэш, как, как это.

{"first_name"=>"Andy", "last_name"=>"Martin", "email_id"=>"[email protected]", "company"=>nil} 

Возможно ли это в Ruby? Если, то как это сделать?

+2

Да, это возможно. Google zip метод –

+0

Он хорошо работает в irb, но не в моем проекте. Он строится таким образом. {["first_name", "last_name", "email_id", "company"] => ["Andy", "Martin", "[email protected]", nil]} – Dinesh

ответ

5

ли это с помощью Array#zip:

h1 = ["first_name", "last_name", "email_id", "company"] 
h2 = ["Andy", "Martin", "[email protected]", nil] 

p Hash[h1.zip(h2)] 

# >> {"first_name"=>"Andy", "last_name"=>"Martin", "email_id"=>"[email protected]", "company"=>nil} 
+0

Спасибо за это. Я не знал о методе 'zip', я как раз собирался предлагать использовать цикл' for', но этот способ намного лучше –

+0

Но это построено так: {["first_name", "last_name", " email_id "," company "] => [" Andy "," Martin "," [email protected] ", nil]} – Dinesh

+0

@ Dinesh Мне не достали .. извините :) Код работает ... Разве это не для вас? –

0

Даже это работает для меня

h1 = ["first_name", "last_name", "email_id", "company"] 
h2 = ["Andy", "Martin", "[email protected]", nil] 

Hash[[h1,h2].transpose] 

# >> {"first_name"=>"Andy", "last_name"=>"Martin", "email_id"=>"[email protected]", "company"=>nil} 
Смежные вопросы