如何通过散列中的值对散​​列数组进行sorting?

这个Ruby代码不像我所期望的那样:

# 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 

我正在寻找关键字“值”sorting哈希数组,但他们打印未分类。

Ruby的sort不会在原地sorting。 (你有Python的背景,也许?)

rubysort! 就地sorting,但sort_by没有就地变体。 在实践中,你可以这样做:

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

根据@ shteef,但与sort!实施sort! build议如下:

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

尽pipeRuby没有in-place变体,你可以这样做:

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

Array.sort_by! 在1.9.2中join

你可以使用sort_me.sort_by!{ |k| k["value"]} sort_me.sort_by!{ |k| k["value"]} 。 这应该工作。