如何在ruby中对复杂数组进行排序

时间:2015-02-26 21:27:28

标签: ruby

我正在寻找一种通过升序或降序复杂数组进行排序的正确方法。

arr = [[100, 200, 300], [100, 250, 600], [50, 10, 1030]]

我想根据目标值[value,value,target_value]

对此数组进行排序

我有自己的方式来做这件事但看起来很丑陋而且很慢。

我们是否有正确的方法在ruby中执行此操作?

提前致谢。

3 个答案:

答案 0 :(得分:4)

或者甚至更短:

arr.sort_by(&:last)

如果您需要按降序排列:

arr.sort_by(&:last).reverse

通过两个步骤进行排序和反转似乎很费力,但它实际上是faster而不是sort {}语法。

答案 1 :(得分:3)

[[100, 200, 300], [100, 250, 600], [50, 10, 1030]].sort_by{|x| x[2]}

答案 2 :(得分:1)

这是一种更明确地做到这一点的方法:

arr.sort { |a, b| a[2] <=> b[2] }

对于降序排序,只需颠倒顺序:

arr.sort { |a, b| b[2] <=> a[2] }