我想要通过 swift3.0 的 NSPredicate 数组过滤数组

i want array filter array by NSPredicate of swift3.0

我现在有一个需求,这个需求是用NSPredicate在另一个数组过滤器中使用一个数据数组。在Object-C中是这样的:

NSArray * arr1 = @[@1,@2,@3]; 

NSArray * arr2 = @[@2,@3,@4,@5];

NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)",arr1]; 

NSArray * filter = [arr2 filteredArrayUsingPredicate:filterPredicate]; 

通过这种方法,我可以得到过滤器,这个数组中的元素不包含在arr1.But我在Swift 3.0上找不到相关方法。如果能得到大家的帮助,我将不胜感激

为此你可以简单地使用 filter 不需要使用 NSPredicate.

let array1 = [1,2,3]
let array2 = [2,3,4,5]
let filterArray = array2.filter { !array1.contains([=10=]) }
print(filterArray) // [4, 5]

编辑: 正如@Alexander 建议的那样,如果您还使用 set 和 array1

let array1 = [1,2,3,2,3]
let set = Set(array1)
let array2 = [2,3,4,5]
let filterArray = array2.filter { !set.contains([=11=]) }
print(filterArray)