Kode Ruby ini tidak berfungsi seperti yang saya harapkan:
# 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
Saya mencari untuk mengurutkan array hashes dengan kunci "nilai", tetapi mereka dicetak tanpa disortir.
Array#sort_by!
Ruby 1.9.2 baru. Tersedia hari ini untuk semua versi Ruby dengan membutuhkanbackports
permata saya juga :-)3,2,1
...sort_by
, tetapi gunakansort
atausort!
dan cukup balik operan: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
.Sesuai @shteef tetapi diimplementasikan dengan
sort!
varian seperti yang disarankan:sumber
Meskipun Ruby tidak memiliki
sort_by
varian in-place, Anda dapat melakukan:Array.sort_by!
ditambahkan di 1.9.2sumber
Anda bisa menggunakan
sort_me.sort_by!{ |k| k["value"]}
. Ini seharusnya berhasil.sumber