我有一个对象数组,我需要找到与特定条件匹配的最后一个元素。我试着用 来做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
有没有可能让它更短?
尝试:
matching_item = items.reverse.find{ |i| i.type_id == 10 }
我可能会使用Array#select
并返回最后一场比赛:
matching_item = items.select {|i| i.type_id == 10}.last
.last
如果您决定要所有匹配项,请省略:
matching_items = items.select {|i| i.type_id == 10}
items.reverse_each.detect{|item| iterm.type_id == 10}
#or
items[items.rindex{|item| item.type_id == 10}]