Ответ 1
Ruby sort
не сортируется на месте. (Возможно, у вас есть фон Python?)
Ruby имеет sort!
для сортировки на месте, но нет места для варианта sort_by
. На практике вы можете:
sorted = sort_me.sort_by { |k| k["value"] }
puts sorted
Этот код Ruby не ведет себя так, как я ожидал:
# 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
Я ищу сортировку массива хэшей по ключевому значению "значение", но они напечатаны несортированными.
Ruby sort
не сортируется на месте. (Возможно, у вас есть фон Python?)
Ruby имеет sort!
для сортировки на месте, но нет места для варианта sort_by
. На практике вы можете:
sorted = sort_me.sort_by { |k| k["value"] }
puts sorted
В соответствии с @shteef, но реализовано с вариантом sort!
, как было предложено:
sort_me.sort! { |x, y| x["value"] <=> y["value"] }
Хотя Ruby не имеет варианта sort_by
на месте, вы можете сделать:
sort_me = sort_me.sort_by { |k| k["value"] }
Array.sort_by!
был добавлен в 1.9.2
Вы можете использовать sort_me.sort_by!{ |k| k["value"]}
. Это должно сработать.