Ruby数组:与数组相对应的`&`

时间:2018-05-19 10:41:48

标签: arrays ruby

在ruby中,您可以使用&运算符与两个数组相交 我正试图获得交叉点的剩余部分。

如果我使用简单的案例-就足够了:

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]

我想知道获取第一个数组与第一个数组和第二个数组的交集之间差异的最简单方法

array_1 = [0, 0, 1]
array_2 = [0]
array_1 ??? array_2 => [0, 1]

1 个答案:

答案 0 :(得分:1)

我有proposed我认为你想要添加到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]