2015-11-23 17 views
11

że dwie tabliceRuby - Połącz dwie tablice i usunąć wartości, które duplikat

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

b = [2, 4, 6] 

ja do scalenia się z dwóch tablic, a następnie usunąć wartości, które są takie same w drugiej tablicy. Wynik powinien być:

c = [1, 3, 5, 6] 

Próbowałem odjąć dwie tablice, a wynik jest [1, 3, 5]. Chcę również uzyskać wartości z drugiej tablicy, która nie jest duplikowana z pierwszej tablicy.

+7

a + b - (a & b) – Dmitry

+0

Dziękuję, droga prostsza niż myślałem .. Dziękuję bardzo !! – user3204760

+2

... lub '(a-b) + (b-a)'. –

Odpowiedz

9

Możesz wykonać następujące czynności!

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

Komentarz Dmitriego jest taki sam, mimo że samodzielnie wymyśliłem mój pomysł.

+0

Dzięki za odpowiedź z wyjaśnieniem !. – user3204760

+0

Powinieneś odwołać się do wcześniejszego komentarza @ Dmitry'ego, ponieważ stanowi on podstawę dla twojej odpowiedzi (nawet jeśli wymyśliłeś to niezależnie). –

4

Co powiesz na to.

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

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

Użyj Array#uniq.

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

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

'Chciałbym scalić obie tablice, a następnie usunąć wartości, które są takie same z innymi tablicami. Jest to instrukcja problemu ... Twoje rozwiązanie nie działałoby w tym przypadku. – Abhinay

+2

@Abhinay to rozwiązanie jest poprawne. to tylko inne podejście. chyba że ma gorszą wydajność, jest to bardziej oczywiste podejście niż zaakceptowana odpowiedź. – wuliwong

Powiązane problemy