【问题标题】:How to sort a nested array by element count in Ruby [duplicate]如何在Ruby中按元素计数对嵌套数组进行排序[重复]
【发布时间】:2016-02-02 07:44:04
【问题描述】:

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

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

【问题讨论】:

  • array.sort_by(&:count).reverse,这可能是以前问过的......

标签: arrays ruby sorting


【解决方案1】:

只是

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)

【讨论】:

  • 甚至array.min_by(array.size) { |a| -a.size } ;-)
  • @Stefan,我实际上(暂时)考虑过。 :-) 奇怪的是,这个问题是重复的问题的答案不包括我的#4。
猜你喜欢
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多