Сортировка массива по двум значениям - PullRequest
7 голосов
/ 27 января 2010

Предположим, у меня есть

an_array = [[2, 3], [1, 4], [1, 3], [2, 1], [1, 2]]

Я хочу отсортировать этот массив по первому значению каждого внутреннего массива, а затем по второму (поэтому отсортированный массив должен выглядеть следующим образом: [[1, 2], [1, 3], [1, 4], [2, 1], [2, 3]])

Какой самый читаемый способ сделать это?

Ответы [ 3 ]

13 голосов
/ 27 января 2010

Это поведение по умолчанию для сортировки массивов (для доказательства см. Определение метода Array # <=> ). Вы должны просто быть в состоянии сделать:

 an_array.sort
8 голосов
/ 27 января 2010

Если вам нужно поведение не по умолчанию, изучите sort_by (ruby 1.8.7 +)

например. сортировать по второму элементу, затем по первому

a.sort_by {|e| [e[1], e[0]]}  # => [[2, 1], [1, 2], [1, 3], [2, 3], [1, 4]]

или сортировка по возрастанию первого элемента, а затем по убыванию второго элемента

a.sort_by {|e| [e[0], -e[1]]}  # => [[1, 4], [1, 3], [1, 2], [2, 3], [2, 1]]
1 голос
/ 27 января 2010

an_array.sort

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