我有一个对象数组,我需要找到与特定条件匹配的最后一个元素。我试着用each_reverse
做到这一点,但它结束了太多的代码:搜索数组中的特定项目
matching_item = nil
items.reverse_each do |item|
if (item.type_id == 10)
matching_item = item
break
end
end
是否有可能把它缩短?
我有一个对象数组,我需要找到与特定条件匹配的最后一个元素。我试着用each_reverse
做到这一点,但它结束了太多的代码:搜索数组中的特定项目
matching_item = nil
items.reverse_each do |item|
if (item.type_id == 10)
matching_item = item
break
end
end
是否有可能把它缩短?
我可能会使用Array#select
并返回最后一场比赛:
matching_item = items.select {|i| i.type_id == 10}.last
离开关.last
,如果你决定要所有比赛:
matching_items = items.select {|i| i.type_id == 10}
尝试:
matching_item = items.reverse.find{ |i| i.type_id == 10 }
items.reverse_each.detect{|item| iterm.type_id == 10}
#or
items[items.rindex{|item| item.type_id == 10}]
虽然有不错的,但他们搜索所有数组,并在找到最适合的匹配元素时不停止。任何方式来这? –