Swift filter函数介绍

来源:互联网 发布:js 设置 form action 编辑:程序博客网 时间:2024/06/13 20:38

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, 40, 55]let numberArray2 = [10, 20, 30, 40, 50]print(numberArray.filter{numberArray2.contains($0)}) //交集print(numberArray.filter{!numberArray2.contains($0)}) //补集print(numberArray.filter{!numberArray2.contains($0)} + numberArray2) //并集



6 0
原创粉丝点击