Ce code Ruby ne se comporte pas comme je m'y attendais:
# 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
Je cherche à trier le tableau de hachages par la clé "valeur", mais ils sont imprimés non triés.
Array#sort_by!
est nouveau dans Ruby 1.9.2. Disponible aujourd'hui pour toute la version Ruby en demandant aussi monbackports
bijou :-)3,2,1
...sort_by
, mais utilisezsort
ousort!
et retournez simplement les opérandes:a.sort! {|x,y| y <=> x }
( ruby-doc.org/core-1.9.3/Array.html#method-i-sort )puts sorted = sort_me.sort_by{ |k,v| v }
.reverse
.Selon @shteef mais implémenté avec la
sort!
variante comme suggéré:la source
Bien que Ruby n'ait pas de
sort_by
variante sur place, vous pouvez faire:Array.sort_by!
a été ajouté en 1.9.2la source
Vous pouvez utiliser
sort_me.sort_by!{ |k| k["value"]}
. Cela devrait fonctionner.la source