web-dev-qa-db-fra.com

Ruby - Fusionne deux tableaux et supprime les valeurs dupliquées

J'ai deux tableaux

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

b = [2, 4, 6]

Je voudrais fusionner les deux tableaux, puis supprimer les valeurs identiques à celles des autres tableaux. Le résultat devrait être:

c = [1, 3, 5, 6]

J'ai essayé de soustraire les deux tableaux et le résultat est [1, 3, 5]. Je veux aussi obtenir les valeurs du second tableau qui n'a pas été dupliqué du premier tableau.

17
user3204760

Vous pouvez faire ce qui suit!

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

Le commentaire de Dmitri est également le même, bien que mon idée soit venue de façon indépendante. 

12
Rubyrider

Utilisez Array#uniq

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

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

Que dis-tu de ça.

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

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

Documentation sur la méthode |
Documentation pour la méthode &

11
ironsand

Identique à Array#uniq:

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

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

La source

2
noraj

Que diriez-vous de Set.new([1,2,3]+[1,4,5])? Ce qui retourne [1,2,3,4,5]

0
Sig