Removing objects from an array based on another array

前端 未结 9 1474
南方客
南方客 2021-02-05 01:14

I have two arrays like this:

var arrayA = [\"Mike\", \"James\", \"Stacey\", \"Steve\"]
var arrayB = [\"Steve\", \"Gemma\", \"James\", \"Lucy\"]

9条回答
  •  广开言路
    2021-02-05 01:36

    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 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)
    

    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

提交回复
热议问题