Объединение хэш-символа ruby с массивом значений в другой хеш с массивом значений
Кажется, я не могу найти ничего, что говорит об этом.
Скажем, у меня есть хеш {"23"=>[0,3]}
, и я хочу объединить этот хэш {"23"=>[2,3]}
, чтобы получить результат с этим хешем {"23"=>[0,2,3]}
Или как насчет {"23"=>[3]}
, объединенного с {"23"=>0}
, чтобы получить {"23"=>[0,3]}
Спасибо!
Ответы
Ответ 1
{"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
Обновлен с помощью подсказки Marc-André Lafortune.