# How do I compare two hashes?

You can compare hashes directly for equality:

``````hash1 = {'a' => 1, 'b' => 2}
hash2 = {'a' => 1, 'b' => 2}
hash3 = {'a' => 1, 'b' => 2, 'c' => 3}

hash1 == hash2 # => true
hash1 == hash3 # => false

hash1.to_a == hash2.to_a # => true
hash1.to_a == hash3.to_a # => false
``````

You can convert the hashes to arrays, then get their difference:

``````hash3.to_a - hash1.to_a # => [["c", 3]]

if (hash3.size > hash1.size)
difference = hash3.to_a - hash1.to_a
else
difference = hash1.to_a - hash3.to_a
end
Hash[*difference.flatten] # => {"c"=>3}
``````

Simplifying further:

Assigning difference via a ternary structure:

``````  difference = (hash3.size > hash1.size) \
? hash3.to_a - hash1.to_a \
: hash1.to_a - hash3.to_a
=> [["c", 3]]
Hash[*difference.flatten]
=> {"c"=>3}
``````

Doing it all in one operation and getting rid of the `difference` variable:

``````  Hash[*(
(hash3.size > hash1.size)    \
? hash3.to_a - hash1.to_a \
: hash1.to_a - hash3.to_a
).flatten]
=> {"c"=>3}
``````