2015-11-23 98 views
11

值I有两个阵列红宝石 - 合并两个数组,并删除具有重复

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

b = [2, 4, 6] 

我想合并这两个阵列,然后删除与其它阵列相同的值。结果应该是:

c = [1, 3, 5, 6] 

我试过减去两个数组,结果是[1,3,5]。我也想从第二个数组中得到第二个数组的值,它们没有从第一个数组中重复。

+7

a + b - (a&b) – Dmitry

+0

谢谢你,比我想象的更简单..非常感谢你! – user3204760

+2

...或'(a-b)+(b-a)'。 –

回答

9

您可以执行以下操作!

# Merging 
c = a + b 
=> [1, 2, 3, 4, 5, 2, 4, 6] 
# Removing the value of other array 
# (a & b) is getting the common element from these two arrays 
c - (a & b) 
=> [1, 3, 5, 6] 

德米特里的评论也一样,虽然我想到了我的想法独立。

+0

感谢您的解答! – user3204760

+0

你应该参考@德米特里先前的评论,因为它构成了你回答的基础(即使你独立提出这个问题)。 –

4

这个怎么样。

(a | b) 
=> [1, 2, 3, 4, 5, 6] 
(a & b) 
=> [2, 4] 

(a | b) - (a & b) 
[1, 3, 5, 6] 
8

使用Array#uniq

a = [1, 3, 5, 6] 
b = [2, 3, 4, 5] 

c = (a + b).uniq 
=> [1, 3, 5, 6, 2, 4] 
+0

'我想合并两个数组,然后删除与其他数组相同的值.'这是问题陈述...您的解决方案在这种情况下不起作用。 – Abhinay

+2

@Abhinay这个解决方案是正确的。这只是一种不同的方法。除非它有更差的表现,否则这是一个比被接受的答案更明显的方法。 – wuliwong