## swift map filter reduce flatMap compactMap 的用法 原

赵大财

``````    struct Person {
var age: Int
var name: String
}

func getAges(people: [Person]) -> [Int] {
return people.compactMap { \$0.age }
}``````
`````` let r1 = 0...5
let r2 = [0,1,2,3,4,5]
print(r1,r2)
print("map的用法:", r1.map{\$0*2} , r2.map{\$0*2})
print("filter的用法:",r1.filter{\$0>2})
print("reduce的用法:",r1.reduce(50,{\$0 + \$1}))
let numbersCompound = [[1,2,3],[4,5,6]];
let flatRes = numbersCompound.flatMap{ \$0.map{ \$0} }
print("flatMap的用法:",flatRes)
let possibleNumbers = ["1", "2", "three", "///4///", "5"]
let compactMapRes: [Int] = possibleNumbers.compactMap { str in Int(str) }
print("compactMap的用法:",compactMapRes)
print( "compactMap的高级用法:",getAges(people: [Person(age: 10, name: "100"),Person(age: 100, name: "100"),Person(age: 1000, name: "100")]))

let rigou = [1, 2, 3, nil, nil, 4, 5] //神奇的空值过滤
let rigouNewArr = rigou.compactMap { \$0 }
print(rigouNewArr)

let numbers = [1, 2, 3, 4]
let mapped = numbers.map {Array(repeating: \$0, count: \$0) }
let flatMapped = numbers.flatMap { Array(repeating: \$0, count: \$0) }
print(mapped)
print(flatMapped)
``````

### 赵大财

swift, Array的高阶函数：filter 和 reduce

1.filter filter: 过滤，可以对数组中的元素按照某种规则进行一次过滤。 函数声明： public func filter(_ isIncluded: (Element) throws -> Bool) rethrows -> [Element] 从定义上看，filte...

like_sunflower
01/05
0
0
swift, Array的高阶函数：flatMap 和 compactMap

flatMap: 对数组的每一个元素做一次处理，返回处理后的数组。 与map的区别是： 返回后的数组中不存在nil， 同时也会把Optional解包。 函数声明： @available(swift, deprecated: 4.1, renam...

01/05
0
0
swift 数组高阶使用（二）

swift 数组高阶使用（二） 这次主要讲解swift中map、flatmap、filter、reduce对数组的操作，你会发现，你的数组变得非常简单，上代码： map 被一个数组调用，并且可以接受一个闭包，返回原数...

2016/07/02
12
0
Swift中的高阶函数：sorted, map, reduce, forEach, flatMap, filter

Andy_Ron
2018/10/15
0
0
java8-Collections and Streams

stream和集合的区别是什么？ 1.在计算的时候处理不同， 2.every element should be computed in the memory and then to be part of collections stream Stream apis filter with a predica......

2018/06/25
18
0

java发送html模板的高逼格邮件

21分钟前
7
0

asnfuy
26分钟前
7
0

Iridium
47分钟前
12
0
golang-mysql-原生

db.go package mainimport ("database/sql""time"_ "github.com/go-sql-driver/mysql")var (db *sql.DBdsn = "root:123456@tcp(127.0.0.1:3306)/test?charset=u......

5
0

1编写一个程序，把用分钟表示的时间转换成用小时和分钟表示的时 间。使用#define或const创建一个表示60的符号常量或const变量。通过while 循环让用户重复输入值，直到用户输入小于或等于0的值...

1李嘉焘1

9
0