2014-03-12 100 views
0

我有兩個陣列one = [1,2,3,4,5,6,7]two = [{1=>'10'},{3=>'22'},{7=>'40'}]合併數組和散列在紅寶石在陣列

兩個將有one.length散列或更小。我想要一個新的數組,如果它的密鑰出現在一個,如果不是,然後使用0. 新陣列將是[10,0,22,0,0,0,40] 這樣做的最佳方法是什麼?

+1

你'two'無效。 – sawa

+3

這也是無效的。 – sawa

回答

4
h = [{1 => '10'}, {3 => '22'}, {7 => '40'}].inject(:merge).to_h 
one.map{|e| h[e].to_i} 
# => [10, 0, 22, 0, 0, 0, 40] 
+3

你應該傳遞一個空散列作爲第一個參數給'inject',否則'[] .inject(:merge)#=> nil'和'h [e]'會引發一個'NoMethodError'。 – toro2k

+1

這很酷+1 –

+2

@ toro2k你的觀點是正確的,但我寧願做'to_h'。這對我來說看起來更漂亮。 – sawa