У меня есть массив хэшей в ruby.Каждый хэш содержит ключ 'rating', который имеет целочисленное значение.Я хочу отсортировать этот массив по убыванию этого значения.Также должен быть сохранен оригинальный порядок хэшей.Как этого добиться?
Этот код выполняет сортировку, но не сохраняет первоначальный порядок: new_results = results.sort {|a, b| b["rating"] <=> a["rating"]}
, где results
- массив хэшей.
Если входной массив: results = [ { "rating" => 6, "id" => 10699} , { "rating" => 3, "id" => 19985}, { "rating" => 6, "id" => 1029} ]
Я ожидаю, что new_results
будет: [{"rating"=>6, "id"=>10699}, {"rating"=>6, "id"=>1029}, {"rating"=>3, "id"=>19985}]
ПРИМЕЧАНИЕ. Это только для пояснения.С помощью приведенного выше кода мы получаем ожидаемый результат.Но порядок не может быть сохранен обязательно для других примеров, которые я наблюдал.
Сохранение порядка означает, что если два хэша имеют одинаковое значение для rating
, то они должны появляться в порядке вкоторые они присутствовали во входном массиве.