美文网首页
Swift 数组2: 高阶函数

Swift 数组2: 高阶函数

作者: YourSummer | 来源:发表于2022-05-16 08:44 被阅读0次
    var array = [0, 1, 2, 3, 4, 5, 6, 7, 8]
    
    1. 特殊属性
    // 数组容量
    let capacity = array.capacity
    
    // 元素个数
    let count = array.count
    
    // 数组是否为空
    let isEmpty = array.isEmpty
    // 请摒弃 普通的判空条件  array.count == 0
    
    2. swapAt: 交换指定下标的元素
    // 交换第0个元素和最后一个元素位置
    array.swapAt(0, array.count - 1)
    print("array = \(array)")
    log 结果:  [8, 1, 2, 3, 4, 5, 6, 7, 0]
    
    3. joined: 直译: 加入, 行为可理解为合并转换
    // 将所有元素拿出来组成一个字符串
    let elementString = array.joined()
    print("elementString = \(elementString)")
    log 结果: "012345678"
    
    // 将所有元素组成一个字符串, 并且每两个元素中间加入'-', 返回一个字符串
    let elementString = array.joined(separator: "-")
    print("elementString = \(elementString)")
    log 结果: "0-1-2-3-4-5-6-7-8"
    
    4. pop: 弹出, 返回
    // 返回最后一个元素, 返回值为可选类型
    let element = array.popLast()
    
    5. shuffle: 重排, 打乱顺序
    // 将数组现有元素重新随机排列, 改变原数组, 无返回值
    array.shuffle()
    
    6. map: 转换
    // 将[Int]类型的数组转换为[String]
    let array = [0, 1, 2, 3, 4, 5]
    let newArray = array.map { (value) -> String in
        return "\(value)"
    }
    // 或者这样写:
    let newArray = array.map { "\($0)" }
    print("newArray = \(newArray)")
    log 结果: ["0", "1", "2", "3", "4", "5"]
    
    7. compactMap: 对比map
    // 将以下数组的元素转换为整形 亦即: [Int]
    let array = ["0", "one", "2", "three", "4", "five"]
    
    // 1.map 不会过滤nil值
    let newArray = array.map { Int($0) }
    print(newArray)
    log 结果: [Optional(0), nil, Optional(2), nil, Optional(4), nil]
    
    // 2. compactMap 会过滤nil值
    let newArray = array.compactMap { Int($0) }
    print(newArray)
    log 结果: [0, 2, 4]
    
    8. filter: 筛选
    let array = [0, 1, 2, 3, 4, 5]
    let newArray = array.filter { (value) -> Bool in
        value > 2
    }
    // 或者这样写
    let newArray = array.filter { $0 > 2 }
    print(newArray)
    
    log 结果: [3, 4, 5]
    
    9. 排序:
    // 1. sorted():   array 可以是let和var, 有返回值, 不改变原数组
    
    let array = [8, 0, 1, 2, 3, 4, 5]
    
    // 1.1 升序:
    let newArray = array.sorted()
    print(newArray)
    log 结果: [0, 1, 2, 3, 4, 5, 8]
    
    // 1.2 按条件排序, 降序
    let newArray = array.sorted { (value1, value2) -> Bool in
        value1 > value2
    }
    // 简写
    let newArray = array.sorted { $0 > $1 }
    
    print(newArray)
    log 结果: [8, 5, 4, 3, 2, 1, 0]
    
    // 2.sort(): array 必须是变量var,  无返回值, 改变原数组
    
    var array = [8, 0, 1, 2, 3, 4, 5]
    
    // 2.1 升序
    array.sort()
    print(array)
    log 结果: [0, 1, 2, 3, 4, 5, 8]
    
    // 2.2 按条件排序, 降序
    array.sort { (value1, value2) -> Bool in
        value1 > value2
    }
    // 简写
    array.sort { $0 > $1 }
    
    print(array)
    log 结果: [8, 5, 4, 3, 2, 1, 0]
    
    10. contains: 包含
    // 数组中是否包含某个元素, 返回Bool
    let contains = array.contains(3)
    
    // 数组中是否包含符合条件的值, 返回Bool
    let contains = array.contains { (value) -> Bool in
        value > 0
    }
    
    11. split: 切片
    var array = [1, 2, 3, 4, 5, 6, 7, 8]
    // 以元素3为分界点, 将数组分割成两个数组
    let newArray = array.split(separator: 3)
    print(newArray)
    log 结果:
    [ArraySlice([1, 2]), ArraySlice([4, 5, 6, 7, 8])]
    两个数组: [1, 2],[4, 5, 6, 7, 8]
    
    持续补充...

    相关文章

      网友评论

          本文标题:Swift 数组2: 高阶函数

          本文链接:https://www.haomeiwen.com/subject/yuiyurtx.html