[英]How to sort array elements in lexicographic order in Ruby
我有一個數組
arr = [[1,2],[2,3],[2,1],[0,1]]
我希望他們井井有條:
arr = [[0,1],[1,2],[2,1],[2,3]]
我想使用Ruby的sort_by
方法來做到這一點。 我如何像這樣在Ruby中在兩個級別上對數組的數組進行排序?
Array#sort
默認按字典順序對子數組Array#sort
(請參閱Array#<=>
)。 您無需定義任何內容:
[[1,2],[2,3],[2,1],[0,1]].sort
# => [[0, 1], [1, 2], [2, 1], [2, 3]]
如果您真的想使用sort_by
:
[[1,2],[2,3],[2,1],[0,1]].sort_by(&:itself)
# => [[0, 1], [1, 2], [2, 1], [2, 3]]
如果您認為子數組的每個元素都是從0到9的數字,則可以使用Array#sort_by
,其中該塊將數組轉換為字符串,然后轉換為整數:
arr.sort_by { |e| e.join.to_i }
#=> [[0, 1], [1, 2], [2, 1], [2, 3]]
[1, 2].join #=> "12" [1, 2].join.to_i #=> 12
arr = [[1,0,2,0],[2,3],[2,1],[0,1]] #=> [[0, 1], [2, 1], [2, 3], [1, 0, 2, 0]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.