filter用于选择数组元素中满足某种条件的元素。
比如一个金额数组,筛选出金额大于30元素
先看一下传统实现:
var
filteredArray:[Int]=[]
for
money
in
moneyArray{
if
(money>30){
filteredArray+=[money]
}
}
我们惟一感兴趣的是money > 30,下面使用filter来定义同样的逻辑。
Swift中filter在Array类中的定义为:
filter(includeElement: (T) -> Bool) -> T[]
以返回true或false的函数includeElement作为参数,对原数组元素调用includeElement时,只有返回true的元素会通过筛选
对数组筛选,我们只需使用
filteredArray=moneyArray.filter({$0>30}){$0 > 30}为筛选闭包,我们忽略了参数名而使用默认参数$0,返回类型隐式推断为Bool
了解了基本用法,下面我们用他来做一点有意思的事情:比如求个交并补集
let numberArray = [10,20,45,32,1,2,3,4,30,55] let numberArray2 = [10,50] print(numberArray.filter{numberArray2.contains($0)}) //交集 print(numberArray.filter{!numberArray2.contains($0)}) //补集 print(numberArray.filter{!numberArray2.contains($0)} + numberArray2) //并集