两个列表中的公共值的方法

时间:2011-01-11 16:39:15

标签: ruby intersection

当我有2个数组(列表)时,Ruby有一个我可以使用的方法吗?我想获得只有两个数组共有的值的数组(列表)?像这样......

a = [1,2,3]
b = [3,4,5]
=> the method would return [3]

反过来说,这些数组(列表)中的“唯一”值。

a = [1,2,3]
b = [3,4,5]
=> the method would return [1,2,4,5]

2 个答案:

答案 0 :(得分:2)

您要查找的字词是交集对称差异。 AFAIK就是Ruby中的这个:

[1,2,3] & [3,4,5] = [3]
[1,2,3] ^ [3,4,5] = [1,2,4,5]

答案 1 :(得分:2)

AND : a & b

Ruby中的数组没有XOR方法,所以你可以通过其他方法来实现。这有两种方式:

XOR : (a | b) - (a & b)
XOR : (a + b) - (a & b) # this result can have duplicates!

XOR : (a - b) | (b - a)
XOR : (a - b) + (b - a) # this result can have duplicates!