Najprostszym sposobem jest użycie nowego Set
pojemnik (dodane w Swift 1.2/Xcode 6.3):
var setA = Set(arrayA)
var setB = Set(arrayB)
// Return a set with all values contained in both A and B
let intersection = setA.intersect(setB)
// Return a set with all values in A which are not contained in B
let diff = setA.subtract(setB)
Jeśli chcesz przypisać otrzymaną wartość arrayA
, wystarczy utworzyć nową instancję za pomocą kopii konstruktor i przypisać ją do arrayA
:
arrayA = Array(intersection)
minusem jest to, że trzeba stworzyć 2 nowe zestawy danych. Należy zauważyć, że intersect
nie mutuje instancji, do której jest wywoływana, po prostu zwraca nowy zestaw.
Istnieją podobne metody dodawanie, odejmowanie, itd., Można spojrzeć na nich
Ta odpowiedź okazała się poprawną, dziękuję. –
To rozwiązanie działa całkiem dobrze w przypadku małych tablic, ale należy pamiętać, że jego złożoność to O (n^2). W przypadku większych tablic rozważałabym konwersję 'tablicaA' do zestawu i użycie go dla' find' - które powinno zmniejszyć złożoność do O (2n) – Antonio