Removing objects from an array based on another array
The easiest way is by using the new Set
container (added 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 Blet intersection = setA.intersect(setB) // Return a set with all values in A which are not contained in Blet diff = setA.subtract(setB)
If you want to reassign the resulting set to arrayA
, simply create a new instance using the copy constructor and assign it to arrayA
:
arrayA = Array(intersection)
The downside is that you have to create 2 new data sets.Note that intersect
doesn't mutate the instance it is invoked in, it just returns a new set.
There are similar methods to add, subtract, etc., you can take a look at them