在数组中搜索特定项

时间:2012-08-27 20:12:15

标签: ruby-on-rails ruby

我有一个对象数组,我需要找到匹配特定条件的最后一个元素。我试图用each_reverse来做,但最终得到了太多的代码:

matching_item = nil

items.reverse_each do |item|
  if (item.type_id == 10)
    matching_item = item
    break
  end
end

是否可以缩短它?

3 个答案:

答案 0 :(得分:5)

尝试:

matching_item = items.reverse.find{ |i| i.type_id == 10 }

答案 1 :(得分:1)

我可能会使用Array#select并返回最后一场比赛:

matching_item = items.select {|i| i.type_id == 10}.last

如果您决定要所有比赛,请取消.last

matching_items = items.select {|i| i.type_id == 10}

答案 2 :(得分:1)

items.reverse_each.detect{|item| iterm.type_id == 10}
#or
items[items.rindex{|item| item.type_id == 10}]