2012-09-01 66 views
0

哈希有4列在Ruby中合併和轉換陣列在Ruby中

array1 = ["label1.1", "label1.2", "label1.3", "label1.4"] 
array2 = ["data1.1", "data1.2", "data1.3", "data1.4"] 

array3 = ["label2.1", "label2.2", "label2.3", "label2.4"] 
array4 = ["data2.1", "data2.2", "data2.3", "data2.4"] 

我需要做的是讓哈希結果陣列尋找

[ {key1=>"label1.1", value1=>"data1.1" }, 
    {key1=>"label1.2", value1=>"data1.2" }, 
    {key1=>"label1.3", value1=>"data1.3" }, 
    {key1=>"label1.4", value1=>"data1.4" }, 

    {key1=>"label2.1", value1=>"data2.1" }, 
    {key1=>"label2.2", value1=>"data2.2" }, 
    {key1=>"label2.3", value1=>"data2.3" }, 
    {key1=>"label2.4", value1=>"data2.4" } 
] 

您的想法?

回答

4
(array1 + array3).zip(array2 + array4).map {|k, v| { key1: k, value1: v } } 
3

不能得到任何比這更簡單和更短:

your_hash = Hash[(array1 + array3).zip(array2 + array4)] 

爲您提供:

=> {"label1.1"=>"data1.1", "label1.2"=>"data1.2", "label1.3"=>"data1.3", "label1.4"=>"data1.4", "label2.1"=>"data2.1", "label2.2"=>"data2.2", "label2.3"=>"data2.3", "label2.4"=>"data2.4"} 
+0

Woops,對不起。我誤解了你的要求。 – dimitarvp

+0

看來這也是我想要的。哪裏不對? –

+0

它不會給你帶有「key1」/「value1」對的散列列表。它只給你散列「labelX.X」鍵和「dataX.X」值。我的代碼實際上並不能滿足您的要求。很高興你喜歡它。 :) – dimitarvp