如何根据其内部元素的长度排列二维数组?内部元素的数量并不相同。通过在内部元素的数量排序二维数组
实施例:
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]]
在排序之后,该阵列将变为:
#=> [[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
方法,使用长度,这将从最小到最大长度由数组进行排序。然后我用它从最大到最小的顺序使用reverse!
方法。
在我想保留索引的情况下所以我创建了一个基于数组索引的散列,然后我想根据前面提到的长度大小对散列进行排序,这个语句是否可以再次使用它? –
@ ZhenLiangLow我相信这是你正在寻找的东西:http://stackoverflow.com/questions/10957012/sort-hash-by-length-of-contained-values –
试试这个:
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]]
啊,我意识到我为什么认为这是错的!排序是正确的 –
在我想保留数组索引的情况下,所以我创建了一个基于数组索引的散列,然后我想根据长度大小对散列进行排序前面已经提到过,这个声明是否与它一起工作? –
你能解释一下你试过吗?如果你证明至少你付出了一些努力来解决问题,那将是很好的。 –
Erm,Simone,我尝试过。 –
我发布的声明是 followers = followers.sort_by {| x |追随者[0..followers.length-1] .length} 追随者是我的数组,我试过这个,但它似乎并没有按照我想要的顺序排序 –