Dieser Ruby-Code verhält sich nicht so, wie ich es erwarten würde:
# 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
Ich möchte das Array der Hashes nach dem Schlüssel "Wert" sortieren, aber sie werden unsortiert gedruckt.
Array#sort_by!
neu in Ruby 1.9.2. Heute für alle Ruby-Versionen verfügbar, da auch meinbackports
Juwel benötigt wird :-)3,2,1
sort_by
, aber verwenden Siesort
odersort!
und drehen Sie einfach die Operanden um: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
.Wie bei @shteef, aber mit der vorgeschlagenen
sort!
Variante implementiert :quelle
Obwohl Ruby keine
sort_by
In-Place-Variante hat, können Sie Folgendes tun:Array.sort_by!
wurde in 1.9.2 hinzugefügtquelle
Sie können verwenden
sort_me.sort_by!{ |k| k["value"]}
. Das sollte funktionieren.quelle