How do I sort an array of hashes by a value in the hash? How do I sort an array of hashes by a value in the hash? arrays arrays

How do I sort an array of hashes by a value in the hash?


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"]}


As per @shteef but implemented with the sort! variant as suggested:

sort_me.sort! { |x, y| x["value"] <=> y["value"] }


Although Ruby doesn't have a sort_by in-place variant, you can do:

sort_me = sort_me.sort_by { |k| k["value"] }

Array.sort_by! was added in 1.9.2