Swift中的数组、字典等集合类型提供了非常强大的过滤filter和映射map方法,可以极大地提高我们处理集合数据的代码质量。
过滤(Filter)
filter方法可以过滤数组或者集合,只留下满足条件的元素:
let numbers = [1, 2, 3, 4, 5, 6]
let evenNumbers = numbers.filter {
$0 % 2 == 0
}
// evenNumbers 为 [2, 4, 6]
这里我们过滤出所有偶数。filter返回一个新数组。
映射(Map)
map方法可以把集合中的每个元素映射到一个新的值:
let doubledNumbers = numbers.map {
$0 * 2
}
// doubledNumbers 为 [2, 4, 6, 8, 10, 12]
它将每个数字映射成了2倍的数字。
我们也可以将字符串数组映射为长度数组:
let strings = ["a", "ab", "abc"]
let lengths = strings.map {
$0.count
} // lengths 为 [1, 2, 3]
组合使用
filter和map可以组合使用实现更复杂的过滤映射操作:
let filteredMapped = numbers.filter{ $0 > 4 }
.map{ $0 * 2 }
// 最终得到 [10, 12]
综上所述,filter和map是处理Swift集合非常重要、常用的工具,合理运用可以大幅提升代码效率和可读性。