2016-06-07 55 views
1

我有散列值的两个阵列和想要做一个从它合并两个数组的散列

first = 
[{:frontman=>"aaa", :category=>"bbb", :subcategory=>nil, :detail=>nil},other hashes] 


second = 
[{:__content__=>"aaa", :id=>"9096290", :frontman=>"aaa"},other hashes] 

我想有

一个大阵哈希

[{:__content__=>"aaa", :id=>"9096290", :frontman=>"aaa", :category=>"bbb", :subcategory=>nil, :detail=>nil},other hashes] 

我对的试过它

(first+second).group_by{|h| h[:frontman]}.map{|k,v| v.reduce(:merge)} 

但它不起作用我

+0

我会认为这是一个冒险的做法是哈希键是唯一的,在你的情况下,两个第一和第二阵列包含与键''哈希:主唱''。 –

+0

@NabeelAmjad我可以删除':frontman'我只为'group_by'子句添加它 – user

+0

这似乎是一个纯粹的Ruby问题。如果是这样,请删除Rails标签。使用Rails标签会浪费只对Rails问题感兴趣的读者的时间,并且可能会导致读者只对纯Ruby问题感兴趣而忽略该问题。 –

回答

6

您可以用这种方式:

first.zip(second).map { |f, s| f.merge(s) } 
#=> [{:frontman=>"aaa", :category=>"bbb", :subcategory=>nil, ...}] 
+0

呃,看起来不错。但是如果我在两个数组中都有不同大小的哈希,或者它不介意 – user

+0

@user,第一个数组必须具有大于或等于 – Ilya

+0

@IIya,好的谢谢 – user