Home

How To Reverse a Ruby Hash

It's nice and easy to reverse a ruby array. See how to easily convert a hash as well.

It's easy to reverse a Ruby array.

a = %w{ red blue green }
# => ["red", "blue", "green"]

a.reverse
# => ["green", "blue", "red"]

But it's not as straightforward with a hash. We have to convert it to an array, reverse it, and send it back to a hash. This works for nested hashes as well.

my_hash = {
:key_1 => 1,
:key_2 => 2,
:key_3 => [1, 2, 3],
:key_4 => {
:subkey_1 => 1,
:subkey_2 => 2
}
}
# => {:key_1=>1, :key_2=>2, :key_3=>[1, 2, 3], :key_4=>{:subkey_1=>1, :subkey_2=>2}}

new_hash = Hash[my_hash.to_a.reverse].to_hash
# => {:key_4=>{:subkey_1=>1, :subkey_2=>2}, :key_3=>[1, 2, 3], :key_2=>2, :key_1=>1}

If you want to keep it simple, you can add a method to the Hash class.

class Hash

def reverse
Hash[self.to_a.reverse]
end

end

Then you could do this:

my_hash.reverse
# => {:key_4=>{:subkey_1=>1, :subkey_2=>2}, :key_3=>[1, 2, 3], :key_2=>2, :key_1=>1}

Let's Connect

Keep Reading

Use Ruby To Post Content To Slack

Once you learn how to use Slack's incoming webhooks, the possibilities are endless. See how to post to Slack using Ruby.

Feb 07, 2016

Access the Site Object within a Jekyll Filter

Filters are the way to make liquid work for you, but sometimes we want more context than we are given when running them.

Aug 21, 2018

A Quicker Way to Compare Multiple Equals Operators in Ruby

When you attempt to write several predictable comparisons in one statement, it gets ugly fast. Here are some methods for cleaning it up.

Apr 20, 2015