Swift map、filter、reduce函数
2018-11-06 本文已影响1人
笙绳省盛
- map 可以对数组中的每一个元素做一次处理
// $0代表数组中的每一个元素
stringArray.map{
return $0.characters.count
}
2.flatMap与map不同之处:
flatMap返回后的数组中不存在nil,同时它会把Optional解包
flatMap还能把数组中存有数组的数组(二维数组、N维数组)一同打开变成一个新的数组
let array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
let arr2 = array.flatMap{ $0 }
arr2 // [1, 2, 3, 4, 5, 6, 7, 8, 9]
flatMap也能把两个不同的数组合并成一个数组,这个合并的数组元素个数是前面两个数组元 素个数的乘积
let fruits = ["apple","orange","puple"]
let counts = [2,3,5]
let arrNew = counts.flatMap { count in
fruits.map({ fruit in
return fruit + "\(count)"
})
}
arrNew ["apple2", "orange2", "puple2", "apple3", "orange3", "puple3", "apple5", "orange5", "puple5"]
3.filer:过滤,可以对数组中的元素按照某种规则进行一次过滤
// $0表示数组中的每一个元素
stringArray.filter{
return $0.characters.count < 10
}
4.reduce:计算,可以对数组的元素进行计算
let stringArray = ["Objective-C", "Swift", "HTML", "CSS", "JavaScript"]
//第一个参数是初始值
print(stringArray.reduce("aaa", {
return $0 == "" ? $1 : $0 + "、" + $1
}))
aaa、Objective-C、Swift、HTML、CSS、JavaScript