-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]?

4

1 回答 1

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 }
于 2013-08-30T10:21:31.927 回答