сортировка многомерного массива в ruby - PullRequest
7 голосов
/ 12 января 2010

У меня есть следующий массив:

[["2010-01-10", 2], ["2010-01-09", 5], ["2009-12-11", 3], ["2009-12-12", 12], ["2009-12-13", 0]]

Я просто хочу отсортировать его по второму значению в каждой группе и вернуть самое высокое, как я хочу, чтобы результат был 12 с указанным выше вводом.

обновление

Могу добавить, что я превратил это в массив, используя to_a, из хеша, поэтому, если есть возможность сделать то же самое с хешем, было бы еще лучше.

Ответы [ 4 ]

29 голосов
/ 12 января 2010

Сортировать по второму значению

x=[["2010-01-10", 2], ["2010-01-09", 5], ["2009-12-11", 3], ["2009-12-12", 12], ["2009-12-13", 0]]

x.sort_by{|k|k[1]}
=> [["2009-12-13", 0], ["2010-01-10", 2], ["2009-12-11", 3], ["2010-01-09", 5], ["2009-12-12", 12]]
8 голосов
/ 12 января 2010

Вызовите метод sort для вашего хэша, чтобы отсортировать его.

hash = hash.sort { |a, b| b[1] <=> a[1] }

Затем преобразуйте ваш хэш в массив и извлеките первое значение.

result = hash.to_a[0][1]
7 голосов
/ 12 января 2010

Используйте это в своем хеше:

hash.values.max

Если вам нужен только самый высокий элемент, его не нужно сортировать!

3 голосов
/ 12 января 2010

Если вам нужна пара ключ-значение с максимальным значением:

hash.max_by {|key, val| val} # => ["2009-12-12", 12]

требуется Ruby 1.8.7 +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...