我想要通过 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)
我现在有一个需求,这个需求是用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)