2015-05-29 126 views
2

我有兩個哈希有相同的密鑰合併紅寶石哈希添加鍵

{1=>2, 2=>450, 3=>3} 

{1=>'1232', 2=>'ffsa', 3=>'vdsvds'} 

我想將它們合併到這個

{ 
    1=> {:number => 2, :string => '1232'}, 
    2=>{:number => 450, :string => 'ffsa'}, 
    3=>{:number => 3, :string => 'vdsvds'} 
} 

獲取值的子項'number'從第一個散列和第二個散列的子項'string'的值。達到此目的的最佳方法是什麼?

+2

考慮到@奧雅納的答案是所提供的只有一個,而你似乎很喜歡它,你應該考慮勾選它。 –

回答

8

這裏有一個辦法:

h1 = {1=>2, 2=>450, 3=>3} 
h2 = {1=>'1232', 2=>'ffsa', 3=>'vdsvds'} 

h1.merge(h2) { |_, o, n| { number: o, string: n } } 
# => { 
#  1=>{:number=>2, :string=>"1232"}, 
#  2=>{:number=>450, :string=>"ffsa"}, 
#  3=>{:number=>3, :string=>"vdsvds"} 
#  } 
+0

唉你打敗我吧! – Anthony

+0

就像一個魅力,ty。 –