2014-05-19 178 views
1

我有這兩個以下陣列:如何將這兩個數組組合成一個散列?

Classification.product.map{|p|[p.description, p.id]}

[["Antiques", 1], ["Art", 2], ["Auto", 3], ["Books", 4], ["Clothing & Accessories", 5], ["Collectibles/Trading Cards", 6], ["Electronics & Computers", 7], ["Event Decoration", 8], ["Furniture", 9], ["Home & Garden", 10], ["Instruments", 11], ["Kids & Baby", 12], ["Movies & Music", 13], ["Property Rentals", 14], ["Shoes/Sneakers", 15], ["Sports & Outdoors", 16], ["Tickets", 17], ["Toys & Games", 18], ["Video Games", 19], ["Other", 20]] 

Classification.service.map{|p|[p.description, p.id]}

[["Beauty", 21], ["Child Care", 22], ["Cleaning", 23], ["Computer/Technology", 24], ["Culinary", 25], ["Custom Goods", 26], ["Decorating/Interior Design", 27], ["Fashion", 28], ["Fitness", 29], ["Health/Wellbeing", 30], ["Home Improvement", 31], ["Landscaping/Yard", 32], ["Odd Jobs/Handymen", 33], ["Organizing", 34], ["Event Planning", 35], ["Pet Care", 36], ["Photography/Video", 37], ["Professional Services", 38], ["Tutoring/Instruction", 39], ["Other", 40]] 

我想要做的就是創建一個散列結果,其中每個鍵是一個元素第一個數組和每個值都是第二個數組中的一個元素。

因此,理想情況它會是這個樣子:

{["Antiques", 1]=>["Beauty", 21], ["Art", 2]=>["Child Care", 22], etc.} 

有恰好是類別的產品和服務相等的;但是,如果它們不相等,我希望代碼仍然有效。因此,如果分類比其他分類少,則應該插入空白鍵/值。

我該怎麼做/可以做到嗎?

回答

2

可以是這樣做的:

Hash[ 
    Classification.product.map{|p|[p.description, p.id]}.zip(
     Classification.service.map{|p|[p.description, p.id]})] 

這是一個有點混亂,需要一行代碼。最重要的有兩件事我使用:

  • Hash[a]其中a是陣列,其中每個元素是具有兩個元件的陣列產生的散列,其中關鍵是所述第一元件和值 - 第二個。

  • 拉鍊「拉鍊」兩個陣列從而產生數組的數組與兩個元素。

+0

此致返回一個陣列,其中鍵是product.description和值是service.id – Snubber

+0

它看起來像這樣:{「古董」 => 21,「藝術」 => 22,「自動」 => 23,「書籍」=> 24,「服裝和配飾」=> 25,「收藏品/交易卡」=> 26,「電子和電腦」=> 27,「活動裝飾」=> => 29,「家庭與花園」=> 30,「樂器」=> 31,「孩子與寶寶」=> 32,「電影與音樂」=> 33,「物業租賃」=> 34,「Shoes/Sneakers 「=> 35,」Sports&Outdoors「=> 36,」Tickets「=> 37,」Toys&Games「=> 38,」Video Games「=> 39,」Other「=> 40} – Snubber

+0

@Snubber抱歉,誤解了這個問題。我正在做的比我應該多 –

相關問題