【无标题】

map: 正常遍历

flatMap:已弃用:4.1,重命名为:“compactMap(_:)”,消息:“对于闭包返回可选值的情况,请使用compactMap。
flatMap:可以自动解包。特殊表达式可以去nil。

//二维数组可以解包
 let array = [[1,2,3], [4,5,6], [7,8,9]]
 let arrayFlatMap = array.flatMap { $0 }
 print(arrayFlatMap) //[1, 2, 3, 4, 5, 6, 7, 8, 9]

//这种则无法解包
var customArr2 : [Any] = ["李一", "张2", "刘3", "赵四", "王五",["吴6","范7","吕宝贝8"]] 
 let array2 = customArr2.flatMap { $0}
   print(array2)//["李一", "张2", "刘3", "赵四", "王五", ["吴6", "范7", "吕宝贝8"]]

let fruits = ["apple", "banana", "orange", ""]
let counts = fruits.flatMap { fruit -> Int? in
    let length = fruit.characters.count
    guard length > 0 else {
        return nil
    }
    return length
}
// [5,6,6]

compactMap :函数会自动过滤掉映射结果为nil或者无效的值,只保留非空的映射结果

 let possibleNumbers = ["1", "2", "three", "///4///", "5"]
        //普通map遍历
         let mapped: [Int?] = possibleNumbers.map { str in Int(str) }
        print(mapped)
        //[Optional(1), Optional(2), nil, nil, Optional(5)]
      
          let compactMapped: [Int] = possibleNumbers.compactMap { str in Int(str) }
        print(compactMapped) //[1, 2, 5]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值