我有一个对象数组,我需要找到匹配特定条件的最后一个元素。我试图用each_reverse
来做,但最终得到了太多的代码:
matching_item = nil
items.reverse_each do |item|
if (item.type_id == 10)
matching_item = item
break
end
end
是否可以缩短它?
答案 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}]