将带有值数组的ruby哈希合并到具有值数组的另一个哈希中

时间:2012-06-23 18:13:03

标签: ruby hash

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

假设我有一个哈希{"23"=>[0,3]}并且我希望在此哈希值{"23"=>[2,3]}中合并以生成此哈希值{"23"=>[0,2,3]}

{"23"=>[3]}如何与{"23"=>0}合并以获取{"23"=>[0,3]}

谢谢!

1 个答案:

答案 0 :(得分:27)

{ "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的提示。