2010-01-27 91 views
7
陣列

假設我有排序由兩個值

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

我要排序此陣列由每個內​​陣列的所述第一值,然後由第二(所以排序後的數組應該是這樣的:[[1, 2], [1, 3], [1, 4], [2, 1], [2, 3]]

什麼是最可讀的方式來做到這一點?

回答

13

這是排序陣列的默認行爲(見證明Array#<=>方法定義)。你應該能夠做到:

an_array.sort 
1

an_array.sort

8

如果你想一些非缺省行爲,查處sort_by(紅寶石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]] 
+0

@glenn傑克曼:偉大的答案!這就是我一直在尋找的。謝謝 – Radek 2010-02-07 03:10:08