Este código Ruby no se comporta como esperaba:
# 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
Estoy buscando ordenar la matriz de hashes por la clave "valor", pero se imprimen sin clasificar.
Array#sort_by!
es nuevo en Ruby 1.9.2. Disponible hoy para toda la versión Ruby requiriendo mibackports
gema también :-)3,2,1
...sort_by
, pero usesort
osort!
y simplemente cambie los operandos: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
.Según @shteef pero implementado con la
sort!
variante como se sugiere:fuente
Aunque Ruby no tiene una
sort_by
variante local, puede hacer:Array.sort_by!
fue agregado en 1.9.2fuente
Puede utilizar
sort_me.sort_by!{ |k| k["value"]}
. Esto debería funcionar.fuente