elmt elmt - 9 months ago 12
Ruby Question

How to merge two hashes with no new keys

How could I merge two hashes that results in no new keys, meaning the merge would merge keys that exist in both hashes?

For example, I want the following:

h = {:foo => "bar"}
j = {:foo => "baz", :extra => "value"}

puts h.merge(j) # {:foo => "baz"}

I'm looking for a really clean way of doing this as my current implementation is pretty messy.


You could remove keys that weren't in the first hash from the second hash, then merge:

h.merge j.select { |k| h.keys.include? k }

Unlike my edited-out alternative, this is safe if you decide to change it to a merge! or update.