2014-01-17 3 views
0

У меня есть следующий код:Сортировка Список Рубиновых хэшей по значению Ключа

[{"day":3,"count":4.75},{"day":1,"count":5.5},{"day":2,"count":3.0},{"day":4,"count":5.0},{"day":5,"count":7.2},{"day":6,"count":7.666666666666667},{"day":0,"count":6.75}] 

Я хочу сортировать этот список хэшей по «день» ключевые ценности.

Конечный результат должен выглядеть следующим образом:

[{"day":0,"count":6.75},{"day":1,"count":5.5},{"day":2,"count":3.0},{"day":3,"count":4.75},{"day":4,"count":5.0},{"day":5,"count":7.2},{"day":6,"count":7.666666666666667}] 

Как мне это сделать?

+0

Вы не представили действительный Ruby и не показали, что вы пробовали. –

ответ

0

Вы можете передать блок на #sort на вашем массиве.

array.sort do |a, b| 
    a[:day] <=> b[:day] 
end 

Это будет перебирать ваши хэшей и сравнить с помощью :day ключа.

P.S. Я бы использовал более симпатичный синтаксис символов в ваших массивах.

0
a = [{"day":3,"count":4.75},{"day":1,"count":5.5},{"day":2,"count":3.0},{"day":4,"count":5.0},{"day":5,"count":7.2},{"day":6,"count":7.666666666666667},{"day":0,"count":6.75}] 

a.sort{|x,y| x["day"] <=> y["day"] } 

но оригинал должен быть { "день" => 3, "подсчет" => 4,75}

Смежные вопросы