【发布时间】:2013-08-18 08:23:30
【问题描述】:
我有一个Array 的Arrays,我想按最长到最短排序。我用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 内置排序来实现这一点。
【问题讨论】: