1. ホーム
  2. ruby-on-rails

[解決済み] 配列にオブジェクトが含まれているかどうかを確認するにはどうすればよいですか?

2023-06-12 01:38:55

質問

私は、配列 @horses = [] があり、そこにランダムな馬を入れます。

どのようにすれば、私の @horses 配列にすでに含まれている (存在する) 馬が含まれているかどうかを調べるには?

のようなものを試してみました。

@suggested_horses = []
  @suggested_horses << Horse.find(:first,:offset=>rand(Horse.count))
  while @suggested_horses.length < 8
    horse = Horse.find(:first,:offset=>rand(Horse.count))
    unless @suggested_horses.exists?(horse.id)
       @suggested_horses<< horse
    end
  end

また include? でも試しましたが、文字列のみでした。そこで exists? を指定すると、以下のようなエラーが発生します。

undefined method `exists?' for #<Array:0xc11c0b8>

そこで質問ですが、配列にすでに "horse"が含まれているかどうかを確認し、同じ馬で埋め尽くさないようにするにはどうすればよいでしょうか?

どのように解決するのですか?

Rubyの配列には exists? メソッドはありませんが、配列には include? メソッド ドキュメントで説明されているように . のようなものです。

unless @suggested_horses.include?(horse)
   @suggested_horses << horse
end

は箱から出しても動くはずです。