假設我有排序由兩個值
an_array = [[2, 3], [1, 4], [1, 3], [2, 1], [1, 2]]
我要排序此陣列由每個內陣列的所述第一值,然後由第二(所以排序後的數組應該是這樣的:[[1, 2], [1, 3], [1, 4], [2, 1], [2, 3]]
)
什麼是最可讀的方式來做到這一點?
假設我有排序由兩個值
an_array = [[2, 3], [1, 4], [1, 3], [2, 1], [1, 2]]
我要排序此陣列由每個內陣列的所述第一值,然後由第二(所以排序後的數組應該是這樣的:[[1, 2], [1, 3], [1, 4], [2, 1], [2, 3]]
)
什麼是最可讀的方式來做到這一點?
這是排序陣列的默認行爲(見證明Array#<=>方法定義)。你應該能夠做到:
an_array.sort
an_array.sort
如果你想一些非缺省行爲,查處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]]
@glenn傑克曼:偉大的答案!這就是我一直在尋找的。謝謝 – Radek 2010-02-07 03:10:08