我似乎無法找到任何談論這樣做的地方。將紅寶石哈希與值數組合併到另一個哈希值與數組數組
說我有一個哈希{"23"=>[0,3]}
,我想在這個哈希{"23"=>[2,3]}
合併與此哈希{"23"=>[0,2,3]}
或者怎麼樣{"23"=>[3]}
合併{"23"=>0}
導致獲得{"23"=>[0,3]}
謝謝!
我似乎無法找到任何談論這樣做的地方。將紅寶石哈希與值數組合併到另一個哈希值與數組數組
說我有一個哈希{"23"=>[0,3]}
,我想在這個哈希{"23"=>[2,3]}
合併與此哈希{"23"=>[0,2,3]}
或者怎麼樣{"23"=>[3]}
合併{"23"=>0}
導致獲得{"23"=>[0,3]}
謝謝!
{"23"=>[0,3]}.merge({"23"=>[2,3]}){ |key,oldval,newval| oldval | newval }
#=> {"23"=>[0, 3, 2]}
更通用的方法來處理非數組值:
{"23"=>[0,3]}.merge({"23"=>[2,3]}) do |key, oldval, newval|
(newval.is_a?(Array) ? (oldval + newval) : (oldval << newval)).uniq
end
與馬克 - 安德烈·Lafortune的提示更新。
不知道合併可能會阻止。甜! –
太棒了。完美的作品! +1爲megas!謝謝! – bfcoder
更好,更短,更快使用'oldval | newval' then'(oldval + newval).uniq' –
那麼,*你有什麼試過*?無論如何,看着'注射'?有可能是一個更巧妙的拉鍊方式,雖然... – 2012-06-23 18:15:16
@pst:或者,更好的,'減少'? :) –
@SergioTulentsev什麼的:-) – 2012-06-23 18:16:34