2016-06-07 116 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