2013-08-30 67 views
-2

以下代碼:將鍵/值作爲哈希數組加入?

product.css('.simImage').each do | product | 
    product_image_url = product.xpath('.//a/img/@src').to_s 
    product_hash[:product_image_url] ||= [] 
    product_hash[:product_image_url] << { :image_url => product_image_url } 
end 

產生是這樣的:

[{:IMAGE_URL => 「41g2nv06iwl._sl500_ss120_.jpg」},{ :IMAGE_URL =>「511vczsu4pl._sl500_ss120_。 JPG「},等等,等等]

和此代碼:

product.css('.simProductInfo').each do | product | 
    product_asin = product.xpath('.//a/@href').first.value[/(?<=\/)[A-Z\d]{5,}/] 
    product_hash[:product_asin] ||= [] 
    product_hash[:product_asin] << { :asin => product_asin } 
end 

產生是這樣的:

[{:ASIN => 「0744014476」,},{:ASIN => 「B000ZKA0J6」},等等,等等]

我有許多像這樣的方法。但是它們都會放棄產品的元素,並將它們放置在不同的散列/符號中。我怎麼能這樣做,以便我可以加入他們產生這樣的事情?

[{:ASIN => 「0744014476」,:IMAGE_URL => 「41g2nv06iwl._sl500_ss120_.jpg」 等},{:ASIN => 「B000ZKA0J6」:IMAGE_URL =>「511vczsu4pl._sl500_ss120_。 jpg「等)等等]

並將該散列數組存儲在product_hash[:product]

+0

給相關的HTML太..請..不看同樣可能不能給你很好的建議.. –

回答

1

這應該適合你。

product_hash[:product_image_url].zip(product_hash[:product_asin]).map {|arr| arr[0].merge(arr[1]) } 

如果您有更多的陣列,說a1, a2, a3,那麼你可以做

a1.zip(a2, a3).map {|arr| arr.reduce :merge } 
+0

非常感謝!順便說一句,如果我想在將來添加更多的數組,我該怎麼做?超過一個? – alexchenco

+0

我已更新我的回答 – Santhosh

+0

非常感謝!完美工作。 – alexchenco