ruby-on-rails 如何在数组中合并相同的哈希值?

idfiyjo8  于 2022-11-19  发布在  Ruby
关注(0)|答案(1)|浏览(134)

如果我有:

array = [{:external_product_id=>"A", :quantity=>1}, {:external_product_id=>"A", :quantity=>2}, {:external_product_id=>"B", :quantity=>1}]

并希望将其转换为:

array = [{:external_product_id=>"A", :quantity=>3}, {:external_product_id=>"B", :quantity=>1}]

例如,将具有相同id("A")的产品合并在一起。有没有比使用mapselect等更简单的方法来完成此操作?

deikduxw

deikduxw1#

像这样东西?

array.group_by { |item| item[:external_product_id] }
     .map do |external_product_id, items| 
       { 
         external_product_id: external_product_id, 
         quantity: items.sum { |item| item[:quantity] }
       } 
     end

=> [{:external_product_id=>"A", :quantity=>3}, {:external_product_id=>"B", :quantity=>1}]

相关问题