Ruby Ruby 数组如何多层排序

1875508391 · 2015年01月20日 · 最后由 torvaldsdb 回复于 2017年02月27日 · 2563 次阅读

比如,我的数组是

[[1],[2],[3],[0],[1,2],[1,0],[0,1]]

我希望排序整个数组,先按照数组元素个数,如果个数相同再按照首个元素大小。

我该如何实现呢?谢谢了。

.sort_by {|a| [a.size, a[0]]}

ruby 中数组多层排序

[1] pry(main)> aa = [[1],[2],[3],[0],[1,2,3],[1,0,1],[0,1,2],[1,1,5],[1,1,3]]
=> [[1], [2], [3], [0], [1, 2, 3], [1, 0, 1], [0, 1, 2], [1, 1, 5], [1, 1, 3]]
[2] pry(main)> aa.sort_by {|a| [a.size, a[0], a[2], a[1]]}
=> [[0], [1], [2], [3], [0, 1, 2], [1, 0, 1], [1, 1, 3], [1, 2, 3], [1, 1, 5]]
[3] pry(main)> aa.sort {|a, b| [a.size, a[0], a[2], a[1]] <=> [b.size, b[0], b[2], b[1]]}
=> [[0], [1], [2], [3], [0, 1, 2], [1, 0, 1], [1, 1, 3], [1, 2, 3], [1, 1, 5]]
[4] pry(main)> aa.sort {|a, b| [a.size, a[0], b[2], a[1]] <=> [b.size, b[0], a[2], b[1]]}
=> [[0], [1], [2], [3], [0, 1, 2], [1, 1, 5], [1, 1, 3], [1, 2, 3], [1, 0, 1]]
需要 登录 后方可回复, 如果你还没有账号请 注册新账号