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.
Ruby’s
sortdoesn’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 forsort_byin Ruby 1.8. In practice, you can do:As of Ruby 1.9+,
.sort_by!is available for in-place sorting: