我有以下数组,我想根据嵌套数组中元素数的计数按降序对其进行排序。
array = [[2], [0,3], [0,1], [1,2,4,5], [1,6,10], [], [7,8], [], [], [8], [9]]
排序后,它应该是这样的
array = [[1,2,4,5], [1,6,10], [0,3], [0,1], [7,8], [8], [9], [2], [], [], []]
我想过计算元素并将其保存在嵌套数组中,但我不知道如何对它进行排序。最终,我希望能够在Ruby中使用msort函数。
答案 0 :(得分:5)
那只是
array.sort_by(&:size).reverse
#=> [[1, 2, 4, 5], [1, 6, 10], [0, 3], [0, 1], [7, 8], [2], [8], [9], [], [], []]
另一种方式:
array.sort_by { |a| -a.size }
还有一个:
array.sort { |a,b| b.size <=> a.size }
哦,是的,使用Ruby v2.2 +:
array.max_by(array.size, &:size)