web-dev-qa-db-ja.com

Ruby-2つの配列をマージし、重複する値を削除する

私は2つの配列を持っています

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

b = [2, 4, 6]

2つの配列をマージしてから、他の配列と同じ値を削除します。結果は次のようになります。

c = [1, 3, 5, 6]

2つの配列を減算しようとしましたが、結果は[1、3、5]です。また、最初の配列と重複していない2番目の配列から値を取得したい。

24
user3204760

次のことができます!

# 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]

ドミトリのコメントも同じですが、私は独自にアイデアを思いつきました。

19
Rubyrider

つかいます Array#uniq

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

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

これはどう。

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

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

|メソッドのドキュメント
&メソッドのドキュメント

14
ironsand

と同じ Array#uniq

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

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

ソース

5
noraj

2つの配列を持ちましょう

p = [1, 2, 5, 4, 8, 9]
q = [5, 6, 4, 8, 5, 3]

(p+q).uniq or (p.concat(q)).uniq

=> [1, 2, 5, 4, 8, 9, 6, 3]

また、p|q仕事をすることができます!どちらがあなたに合っているかを決めてください。

1
V K Singh

Set.new([1,2,3]+[1,4,5])はどうですか? [1,2,3,4,5]を返します

0
Sig