我正在寻找一种通过升序或降序复杂数组进行排序的正确方法。
arr = [[100, 200, 300], [100, 250, 600], [50, 10, 1030]]
我想根据目标值[value,value,target_value]
对此数组进行排序我有自己的方式来做这件事但看起来很丑陋而且很慢。
我们是否有正确的方法在ruby中执行此操作?
提前致谢。
答案 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] }