我有一个Array
of Array
s,我想按最长到最短排序。我很容易做到这一点sort_by
> a = [ [1, 2, 9],
[4, 5, 6, 7],
[1, 2, 3] ]
> a.sort_by(&:length).reverse # or a.sort_by {|e| e.length}.reverse
=> [[4, 5, 6, 7], [1, 2, 3], [1, 2, 9]]
然而,我想要的是对等长的列表有一种平局。如果两个列表的长度相等,则最后一个条目较大的列表应该排在第一位。所以在上面,[1, 2, 9]
应该[1, 2, 3]
切换。
我不在乎两个列表的长度相等且最后一个元素相等的情况,如果发生这种情况,它们可以按任何顺序排列。我不知道是否/如何通过 ruby 内置排序来实现这一点。