0

有没有办法评估数组的顺序?我想找到一个按 created_at 日期排序的记录数组,然后查看该数组中的数字是否按顺序排列?

例如:

  Model.all.order(&:created_at).select("lesson_number)
  [1, 2, 4, 3, 5]

应该失败,因为数字不按顺序

我可以执行两个发现。一种按“lesson_number”排序,另一种按created_at 日期排序。将它们都转换为字符串,然后比较两者。但是,如果存在用于处理此类事情的 rails 方法,似乎需要做很多工作。

4

1 回答 1

1

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

input.each_cons(2).reduce(true) { |result, (a, b)| result && (a <=> b) < 0 }

each_cons将遍历您的数组,在这种情况下,每 2 个连续项目产生。因为我们没有将块传递给它,所以它返回一个枚举器,我们可以遍历它并使用reduce(aka inject) 获取单个结果值。

我们的块比较ab使用<=>which 将返回 -1、0 或 1,具体取决于第一个值是“小于”、等于还是“大于”。在这种情况下,我们要确保ais -1

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

于 2012-10-15T21:11:47.153 回答