2

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

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中。但是我在Swift 3.0上找不到相关方法。如果我能得到所有帮助,我将不胜感激

4

1 回答 1

3

为此,您可以简单地使用filter而无需使用NSPredicate.

let array1 = [1,2,3]
let array2 = [2,3,4,5]
let filterArray = array2.filter { !array1.contains($0) }
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($0) }
print(filterArray)
于 2016-12-14T04:37:34.780 回答