我有哈希数组
[{:id=>2, :price_psm=>450, :rooms_count=>3, :sq=>50, :tax_inc=>"t", :title=>"title1"},
{:id=>2, :price_psm=>499, :rooms_count=>3, :sq=>40, :tax_inc=>"t", :title=>"title1"},
{:id=>2, :price_psm=>499, :rooms_count=>3, :sq=>41, :tax_inc=>"t", :title=>"title1"},
{:id=>1, :price_psm=>450, :rooms_count=>2, :sq=>20, :tax_inc=>"t", :title=>"title2"}]
我如何合并相同的散列并创建这样的东西:
[{:id=>2, :price_psm=>[450,499,499], :rooms_count=>3, :sq=>[50,40,41], :tax_inc=>"t", :title=>"title1"},
{:id=>1, :price_psm=>450, :rooms_count=>2, :sq=>20, :tax_inc=>"t", :title=>"title2"}]
最佳答案
类似于:
require 'pp'
INPUT = [{:id=>2, :price_psm=>450, :rooms_count=>3, :sq=>50, :tax_inc=>"t", :title=>"title1"},
{:id=>2, :price_psm=>499, :rooms_count=>3, :sq=>40, :tax_inc=>"t", :title=>"title1"},
{:id=>2, :price_psm=>499, :rooms_count=>3, :sq=>41, :tax_inc=>"t", :title=>"title1"},
{:id=>1, :price_psm=>450, :rooms_count=>2, :sq=>20, :tax_inc=>"t", :title=>"title2"}]
RES = INPUT.group_by {|row| row[:id] }.collect do |k,v|
keys = v.collect {|rec| rec.keys}.flatten.uniq
group = {}
keys.each do |key|
vals = v.collect { |rec| rec[key] }.uniq.compact
group[key] = vals.size > 1 ? vals : vals.first
end
group
end
pp RES
关于ruby - 合并数组中的哈希 [ruby],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7460551/