2014-07-07 46 views
1

在Ruby中,將二維數組值轉換爲散列數組的最有效方法是什麼?紅寶石二維數組與哈希陣列與不同陣列的鍵哈希

例如,來自:

keys = ['First name', 'Last name', 'Phone number'] 
values = [['John', 'Smith', '555-1234'], ['Peter', 'Jones', '555-5678']] 

要:

[ 
    {'First name' => 'John', 
    'Last name' => 'Smith', 
    'Phone number' => '555-1234'}, 
    {'First name' => 'Peter', 
    'Last name' => 'Jones', 
    'Phone number' => '555-5678'} 
] 

回答

3

你可以做

array_of_hashs = values.map do |ary| 
    keys.zip(ary).to_h 
end 

array_of_hashs 
# => [{"First name"=>"John", "Last name"=>"Smith", "Phone number"=>"555-1234"}, 
# {"First name"=>"Peter", "Last name"=>"Jones", "Phone number"=>"555-5678"}] 
+1

謝謝!在Ruby 2.0中,我不得不將'keys.zip(ary).to_h'更改爲'Hash [keys.zip(ary)]'。 – Alex

+0

@AlexNorton Hum。你是對的。 –