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