Ruby - 为什么这种反向排序不能正常工作?

时间:2014-11-04 22:08:38

标签: ruby arrays sorting

我有代码根据所有对象共享的常用方法/值对对象数组进行排序,但它不能正常工作。该代码应该根据增加的值给出X最高总数,但是如果我.first(10)它会错过最高值。如果我first(50),我会看到更多,但仍有一些更高的值丢失。在这里发生了什么,不应该排序并反向确保first(x)将返回具有最高总和的数组?似乎first在没有完成排序的情况下抓住了。

some_array = old_array.sort_by{ |ar| ar.sum(&:ppd) }.reverse.first(10)

以下是old_array在增加清晰度时的外观示例

old_array = [
             [ obj1, obj2 ], #obj1.ppd + obj2.ppd = 50
             [ obj3, obj4 ], #sum ppd = 55
             [ obj5, obj6 ], #sum ppd = 60, does not show in first(10)
             ... #and so on with dozens more
            ]

0 个答案:

没有答案