查找两个数组之间的公共值

如果我想比较两个数组,并创build一个插值的输出string,如果从数组y的数组variables存在x我怎么能得到每个匹配元素的输出?

这是我正在尝试,但没有得到结果。

 x = [1, 2, 4] y = [5, 2, 4] x.each do |num| puts " The number #{num} is in the array" if x.include?(y.each) end #=> [1, 2, 4] 

你可以使用设置的交集方法&为:

 x = [1, 2, 4] y = [5, 2, 4] x & y # => [2, 4] 
 x = [1, 2, 4] y = [5, 2, 4] intersection = (x & y) num = intersection.length puts "There are #{num} numbers common in both arrays. Numbers are #{intersection}" 

会输出:

 There are 2 numbers common in both arrays. Numbers are [2, 4] 

好的,所以&运营商似乎是你需要做的唯一的事情来得到这个答案。

但在我知道我写了一个快速的猴子补丁到数组类来做到这一点:

 class Array def self.shared(a1, a2) utf = a1 - a2 #utf stands for 'unique to first', ie unique to a1 set (not in a2) a1 - utf end end 

&运算符在这里是正确的答案。 更优雅。