Этот код 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
не сортирует на месте. (Возможно, у вас есть опыт работы с Python?)
Рубин имеет сортировку!
для сортировки на месте, но нет варианта на месте для sort_by
. На практике можно сделать:
sorted = sort_me.sort_by { |k| k["value"] }
puts sorted
Согласно @shteef, но реализовано с помощью сортировки ! Предлагаемый вариант
:
sort_me.sort! { |x, y| x["value"] <=> y["value"] }