- Slicing an Array
- Iterating over an Array
- Creating Enumerable Classes
- Sorting an Array
- Iterating over Nested Arrays
- Modifying All the Values in an Array
- Sorting Nested Arrays
- Building a Hash from a Config File
- Sorting a Hash by Key or Value
- Eliminating Duplicate Data from Arrays (Sets)
- Working with Nested Sets
Sorting a Hash by Key or Value
Hashes are unsorted objects because of the way in which they are stored internally. If you want to access a Hash in a sorted manner by key, you need to use an Array as an indexing mechanism as is shown above.
You can also use the Hash#sort method to get a new sorted Array of pairs:
my_hash.sort #=> [["a", "1"], ["b", "2"], ["c", "3"]]
You can do the same by value, but it’s a little more complicated:
my_hash.keys.sort_by { |key| my_hash[key] }.each do |key| puts my_hash[key] end
Or, you can use the Hash#sort method for values:
my_hash.sort { |l, r| l[1]<=>r[1] } #=> [["a", "1"], ["b", "2"], ["c", "3"]]
This works by using the Emmuerator#sort_by method that is mixed into the Array of keys. #sort_by looks at the value my_hash[key] returns to determine the sorting order.