From: ts Date: 2002-11-27T20:00:07+09:00 Subject: Re: Sort by hash element >>>>> "T" == Tim Bates writes: T> Is there an easy, Ruby-idiomatic way to sort this array by the 'score' T> elements of each hash? eg so I get Well, you can give it a block pigeon% ri Array#sort ------------------------------------------------------------- Array#sort arr.sort -> anArray arr.sort {| a,b | block } -> anArray ------------------------------------------------------------------------ Returns a new array created by sorting arr. Comparisons for the sort will be done using the <=> operator or using an optional code block. The block implements a comparison between a and b, returning -1, 0, or +1. a = [ "d", "a", "e", "c", "b" ] a.sort #=> ["a", "b", "c", "d", "e"] a.sort {|x,y| y <=> x } #=> ["e", "d", "c", "b", "a"] pigeon% pigeon% ruby a = [{'name'=>'Anna', 'score'=>11}, {'name'=>'Bryce', 'score'=>7}, {'name'=>'Chris', 'score'=>9}] b = a.sort {|k,l| k['score'] <=> l['score']} p b ^D [{"score"=>7, "name"=>"Bryce"}, {"score"=>9, "name"=>"Chris"}, {"score"=>11, "name"=>"Anna"}] pigeon% Guy Decoux