如何在Ruby中按元素计数对嵌套数组进行排序

时间:2016-02-02 07:44:05

标签: arrays ruby sorting

我有以下数组,我想根据嵌套数组中元素数的计数按降序对其进行排序。

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函数。

1 个答案:

答案 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)