17

我似乎找不到任何谈论这样做的地方。

假设我有一个哈希{"23"=>[0,3]},我想合并这个哈希{"23"=>[2,3]}以得到这个哈希{"23"=>[0,2,3]}

或者如何{"23"=>[3]}合并{"23"=>0}得到{"23"=>[0,3]}

谢谢!

4

1 回答 1

37
{ "23" => [0,3] }.merge({ "23" => [2,3] }) do |key, oldval, newval| 
  oldval | newval
end
#=> {"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

更新了 Marc-André Lafortune 的提示。

于 2012-06-23T18:24:10.513 回答