5

私は2つの配列を持っています

ordered = [1, 2, 3, 4, 5]

some_list = [2, 6, 4]

2 つの配列を比較し、重複を見つけて、新しい配列に形成したいと思います。トリックは、配列で提供された順序で配列を維持することorderedです。

new_array = [2, 4] # Result should be this

私はそれを行う1つの方法を考えましたが、パフォーマンスは改善できると思います.

ordered.each do |value1|
  some_list.include? value1 
    new_array << value1
  end
end

これを改善する方法はありますか?

ベンチマーク結果

                   user     system      total        real
  using &        0.210000   0.000000   0.210000 (  0.212070)
  using select   0.220000   0.000000   0.220000 (  0.218889)
4

3 に答える 3

2

次の方法でも実行できます。

uniques = ordered - some_list
duplicates = ordered - uniques

順序は保持されます。

参照: http://ruby-doc.org/core-2.0.0/Array.html#method-i-2D

于 2013-10-05T13:29:16.640 に答える