按照内部元素的数量对2D数组进行排序
如何按内部元素的长度对2D数组进行排序? 内部元素的数量不一样。
例:
a = [[1], [2, 3], [4, 5, 6, 7], [8, 9]]
排序后,数组将变为:
#=> [[4, 5, 6, 7], [2, 3], [8, 9], [1]]
该解决方案有效:
a = [[1], [2, 3], [4, 5, 6, 7], [8, 9]] a.sort_by! { |array| -array.length } #=> [[4, 5, 6, 7], [8, 9], [2, 3], [1]]
我使用sort_by
方法并按长度从最大到最小排序。
这个解决方案更具可读性并且工作正常,但速度有点慢:
a = [[1], [2, 3], [4, 5, 6, 7], [8, 9]] a.sort_by(&:length).reverse! #=> [[4, 5, 6, 7], [8, 9], [2, 3], [1]]
我正在使用sort_by
方法使用length,它将数组从最小到最大按长度排序。 然后我reverse!
使用reverse!
方法它从最大到最小的顺序。
试试这个:
a = [[1], [2, 3], [4, 5, 6, 7], [8, 9]] a.sort { |x, y| y.size <=> x.size } #=> [[4, 5, 6, 7], [2, 3], [8, 9], [1]]