Arrays Rails,评估数字是否按顺序排列

Arrays Rails,评估数字是否按顺序排列,arrays,ruby-on-rails-3,Arrays,Ruby On Rails 3,有没有办法计算数组的顺序?我想找到一个由created_在date排序的记录数组,然后查看该数组中的数字是否按顺序排列 例如: Model.all.order(&:created_at).select("lesson_number) [1, 2, 4, 3, 5] 应失败,因为数字不按顺序排列 我可以执行两项发现。一个按“课程号”排序,另一个按创建日期排序。将两者转换为字符串,然后比较两者。但是,如果有一个rails方法来处理这样的事情,那么似乎需要做很多工作。您可以在Ruby

有没有办法计算数组的顺序?我想找到一个由created_在date排序的记录数组,然后查看该数组中的数字是否按顺序排列

例如:

  Model.all.order(&:created_at).select("lesson_number)
  [1, 2, 4, 3, 5]
应失败,因为数字不按顺序排列


我可以执行两项发现。一个按“课程号”排序,另一个按创建日期排序。将两者转换为字符串,然后比较两者。但是,如果有一个rails方法来处理这样的事情,那么似乎需要做很多工作。

您可以在Ruby中组合一些方法来非常有效地完成这项工作

input.each_cons(2).reduce(true) { |result, (a, b)| result && (a <=> b) < 0 }
input.each_cons(2).reduce(true){| result,(a,b)| result&&(ab)<0}
each_cons
将遍历您的数组,在本例中,每个数组生成两个连续项。因为我们不给它传递一个块,所以它返回一个枚举数,我们可以使用
reduce
(也称
inject
)遍历它并获得一个结果值

我们的块使用
比较
a
b
,后者将根据第一个值是“小于”、“等于”还是“大于”返回-1、0或1。在这种情况下,我们要确保
a
-1

如果您不熟悉它,块参数中的括号是Ruby 1.9+,它们允许参数散开(否则我们会在块中得到一个2项数组)。

另一个资源为您提供