繁体   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