Ruby 1.9.2 introduced order into hashes. How can I test two hashes for equality considering the order?
Given:
h1 = {"a"=>1, "b"=>2, "c"=>3}
h2 = {"a"=>1, "c"=>3, "b"=>2}
I want a comparison operator that returns false
for h1
and h2
. Neither of the followings work:
h1 == h2 # => true
h1.eql? h2 # => true
Probably the easiest is to compare the corresponding arrays.
You could compare the output of their
keys
methods:But, comparing Hashes based on key insertion order is kind of strange. Depending on what exactly you're trying to do, you may want to reconsider your underlying data structure.