How do I sort an array of hashes by a value in the hash?
arrays, hash, ruby, sorting
Solution
Ruby's `sort` doesn't sort in-place. (Do you have a Python background, perhaps?)
Ruby has `sort!` for in-place sorting, but there's no in-place variant for `sort_by` in Ruby 1.8. In practice, you can do:
sorted = sort_me.sort_by { |k| k["value"] }
puts sorted
As of Ruby 1.9+, `.sort_by!` is available for in-place sorting:
sort_me.sort_by! { |k| k["value"]}
Problem
This Ruby code is not behaving as I would expect: ``` # create an array of hashes sort_me = [] sort_me.push({"value"=>1, "name"=>"a"}) sort_me.push({"value"=>3, "name"=>"c"}) sort_me.push({"value"=>2, "name"=>"b"}) # sort sort_me.sort_by { |k| k["value"]} # same order as above! puts sort_me ``` I'm looking to sort the array of hashes by the key "value", but they are printed unsorted.