How To Filter Array Using Element in Another Array in Swift? How To Filter Array Using Element in Another Array in Swift? ios ios

How To Filter Array Using Element in Another Array in Swift?


let toBeFiltered = ["star0", "star2", "star1", "star0", "star3", "star4"]let theFilter = ["star1", "star3"]let filtered = toBeFiltered.filter(theFilter.contains)


You can also filter Struct array as well

struct myStruct        {          var userid:String;          var details:String;          init() {            userid = "default value";            details = "default";          }    };    var f1 = myStruct();    f1.userid = "1";    f1.details = "Good boy";    var f2 = myStruct();    f2.userid = "2";    f2.details = "Bad boy";    var f3 = myStruct();    f3.userid = "3";    f3.details = "Gentleman";    var arrNames1:Array = [f1,f3];    var arrNames2:Array = [f3,f1,f2];    let filteredArrayStruct =  arrNames1.filter( { (user: myStruct) -> Bool in      return arrNames2.contains({ (user1: myStruct) -> Bool in        return user.userid == user1.userid;      })    })print(filteredArrayStruct)

For Set you must conforms the Hashable protocol

class mytestclass: Hashable{  var userid:Int ;  var details:String;  var hashValue: Int {    return self.userid  }  init(userid: Int, details:String) {  self.userid = userid;  self.details = details;  }}func ==(lhs: mytestclass, rhs: mytestclass) -> Bool {  return lhs.userid == rhs.userid}var t1 = mytestclass(userid: 1,details: "Good boy");var t2 = mytestclass(userid: 2,details: "bad boy");var t3 = mytestclass(userid: 3,details: "gentle man");var classArrayNames:Set<mytestclass> = [t1,t2];var classArrayNames2:Set<mytestclass> = [t3,t1,t2]; let result =  Set(classArrayNames).intersect(classArrayNames2)