解答:Swift 中怎么删除数组中 nil 元素

当使用带有 Optional 可选值的数组类型时,可以使用 .compactMap() 方法轻松地过滤掉 nil 元素。


示例一

有一个 [String?] 的可选字符串的数组 optionalArray ,使用 .compactMap() 方法过滤 nil 值得到 resultArray 结果。

func filterOptional() {
    let optionalArray: [String?] = ["red", "blue", nil, "white", "black"]
    let resultArray: [String] = optionalArray.compactMap { $0 }
    print(resultArray)
    // 输出 ["red", "blue", "white", "black"]
}

optionalNumbers.compactMap { $0 } 是简写形式的传递闭包,完整写法可以参考示例二。


示例二

筛选出来可选字符串的数组 optionalArray 的阿拉伯数字

func filterNums() -> String {
    let optionalArray = ["一", "2", nil, "3", "四"]
    let resultArray = optionalArray.compactMap { numStr in
        // 先通过 if let 解包排除 nil
        if let numStr {
            // 再通过 Int.init?(_ description: String) 方法排除非阿拉伯数字的字符
            return Int(numStr)
        } else {
            return nil
        }
    }
    print(resultArray)
}

  本文自 https://www.codeun.com 发布,相应代码均自主编写并严格审阅和测试,完整代码中包含丰富的学习笔记和使用方式、实用技巧。
  · 如若转载,请注明出处:https://www.codeun.com/archives/1080.html ·

(0)
上一篇 2023-04-23 下午10:38
下一篇 2023-04-25

发表回复

登录后才能评论