有没有办法评估数组的顺序?我想找到一个由created_at日期排序的记录数组,然后查看该数组中的数字是否按顺序排列?
例如:
Model.all.order(&:created_at).select("lesson_number)
[1, 2, 4, 3, 5]
应该失败,因为数字不是按顺序
我可以执行两个发现。一个按“lesson_number”排序,另一个按created_at日期排序。将它们转换为字符串然后比较两者。但是,如果存在rails方法来处理这样的事情,似乎需要做很多工作。
答案 0 :(得分:1)
您可以在Ruby中结合使用几种方法来非常有效地执行此操作。
input.each_cons(2).reduce(true) { |result, (a, b)| result && (a <=> b) < 0 }
each_cons
将遍历你的数组,在这种情况下,每两个连续项。因为我们没有将它传递给一个块,所以它返回一个枚举器,我们可以使用reduce
(a.k.a。inject
)迭代并获得一个结果值。
我们的块使用a
比较b
和<=>
,它将返回-1,0或1,具体取决于第一个值是“小于”,等于还是“比...更棒”。在这种情况下,我们希望确保a
为-1
。
如果你不熟悉它,块参数中的括号是Ruby 1.9+,它们允许参数被喷溅(否则我们会在块中得到一个2项数组)。