n配列と数百万の要素(データベースID)を交差させる必要があります。このコードは完璧に機能しますが、低速です(非常に大きな配列の場合)。どうすれば改善できますか?
[[1,2,3,4],[2,4,6,8],[4,5,8]].inject([]){|c,v| c = v if c.size==0; c = c&v if c.size>0; c }
[1,2,3,4] & [2,4,6,8] & [4,5,8] #=> [4]
交差法はハッシュを使うので早いはずです。
Ruby は交差演算子を提供します。
これを試してみることをお勧めします:
> [[1,2,3,4],[2,4,6,8],[4,5,8]].reduce{ |accum, arr| accum & arr }
=> [4]
編集:
これはもう少し簡潔に書くことができますが、可読性に問題があります。
[[1,2,3,4],[2,4,6,8],[4,5,8]].reduce(:&)