2

オブジェクトの配列があり、特定の条件に一致する最後の要素を見つける必要があります。でやろうとしましたeach_reverseが、コードが多すぎてしまいました。

matching_item = nil

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

短くすることはできますか?

4

3 に答える 3

5

試す:

matching_item = items.reverse.find{ |i| i.type_id == 10 }
于 2012-08-27T20:19:28.953 に答える
1
items.reverse_each.detect{|item| iterm.type_id == 10}
#or
items[items.rindex{|item| item.type_id == 10}]
于 2012-08-27T20:46:43.270 に答える
1

私はおそらくArray#select最後の一致を使用して返します:

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

.lastすべての一致が必要な場合は、オフのままにします。

matching_items = items.select {|i| i.type_id == 10}
于 2012-08-27T20:17:57.097 に答える