Der einfachste Weg ist durch den neuen Set
Behälter mit (hinzugefügt in 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)
Wenn Sie die Ergebnismenge zu arrayA
, erstellen Sie einfach eine neue Instanz mit der Kopie neu zuweisen möchten Konstruktor und weisen es arrayA
:
arrayA = Array(intersection)
Der Nachteil ist, dass Sie zwei neue Datensätze erstellen haben. Beachten Sie, dass intersect
nicht die Instanz mutiert, in der es aufgerufen wird, es gibt nur eine neue Menge zurück.
gibt es ähnliche Methoden addieren, subtrahieren, etc., können Sie einen Blick auf sie
Dies erwies sich als die richtige Antwort, danke. –
Diese Lösung funktioniert ziemlich gut für kleine Arrays, aber es muss berücksichtigt werden, dass ihre Komplexität O (n^2) ist. Bei größeren Arrays würde ich 'arrayA' in ein Set konvertieren und es für' find' verwenden - das sollte die Komplexität auf 0 (2n) reduzieren. – Antonio