オブジェクトの配列があり、特定の条件に一致する最後の要素を見つける必要があります。でやろうとしました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 }
items.reverse_each.detect{|item| iterm.type_id == 10}
#or
items[items.rindex{|item| item.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}