Ruby では、& 演算子を使用して 2 つの配列を交差させることができます。 交差点の残りの部分を取得しようとしています。
単純なケースを使用する場合は、 - で十分です。
array_1 = [0, 1]
array_2 = [0]
array_1 - array_2 => [1]
ここで、最初の配列に 0 が複数回出現すると想像してください。
array_1 = [0, 0, 1]
array_2 = [0]
array_1 - array_2 => [1]
最初の配列と最初の配列と 2 番目の配列の交点の差を取得する最も簡単な方法を知りたいです
array_1 = [0, 0, 1]
array_2 = [0]
array_1 ??? array_2 => [0, 1]
Ruby コアに追加してほしいと思われるメソッドを提案しました。使用例についてはリンクを参照してください。
class Array
def difference(other)
h = other.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }
reject { |e| h[e] > 0 && h[e] -= 1 }
end
end
a = [1,2,3,4,3,2,2,4]
b = [2,3,4,4,4]
a.difference b
#=> [1, 3, 2, 2]