我似乎无法找到任何谈论这样做的地方。将红宝石哈希与值数组合并到另一个哈希值与数组数组
说我有一个哈希{"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