以下代码:
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 =&gt; “中41g2nv06iwl._sl500_ss120_.jpg”}, {:image_url =&gt;“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 =&gt;“0744014476”,},{:asin =&gt;“B000ZKA0J6”}等等。]
我有很多像这样的方法。但他们都废弃了产品的元素并将它们放在不同的散列/符号中。我怎么能这样做,以便我可以加入他们来制作这样的东西?
[{:asin =&gt;“0744014476”,:image_url =&gt;“41g2nv06iwl._sl500_ss120_.jpg”,等等},{:asin =&gt;“B000ZKA0J6”,:image_url =&gt;“511vczsu4pl._sl500_ss120_ .jpg“等等}等等。]
并将该哈希数组存储在product_hash[:product]
?
答案 0 :(得分: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 }