如何判断Ruby on Rails 3中的对象数组的索引?

时间:2011-09-29 16:42:53

标签: arrays ruby-on-rails-3

我有一系列待办事项[Todo1, Todo2, Todo3]

每个对象都有一个属性:done_date

我需要找到:done_date => null

对象的第一个实例

然后我需要知道它是todos[N]的索引所以我可以在todos[N-1]之前找到对象

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以尝试稍微不同的方式。利用Ruby的Enumerable#take_while

# assuming 'todos' holds your todo objects
todos.take_while { |todo| todo.done_date != nil }.last

这将从todos获取所有todo对象,直到它看到nil done_date,然后抓住最后一个。您将在第一个零done_date之前获得最后一个待办事项。

所以,如果你有

todos = [todo1, todo2, todo3, todo4_with_null_done_date]

上面的代码示例将返回todo3

那就是说,如果你真的正在寻找利用数组指标的东西,你也可以尝试这样的事情:

first_nil_index = todos.find_index { |todo| todo.done_date.nil? }
todos[first_nil_index - 1]