簡體   English   中英

如何在Ruby中按字典順序對數組元素進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM