You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现String数组转Int数组:空值转0,不可转换元素直接移除?

Swift String数组转符合规则的Int数组最优实现

现有代码存在的问题

你当前的实现有两个明显缺陷:

  • 遇到无法转换为Int的非空字符串(比如示例中的"x")时,Int(current)!强制解包会直接触发运行时崩溃
  • 没有实现「无法转换为Int的元素直接移除」的需求规则

最优实现方案

使用Swift标准库的compactMap即可单次遍历完成全部逻辑,既保证安全又兼顾性能,时间复杂度为O(n):

func convertValues(_ number: [String]) -> [Int] {
    return number.compactMap { current in
        // 空字符串直接返回0
        if current.isEmpty {
            return 0
        }
        // 转换成功返回对应Int,转换失败返回nil会被compactMap自动过滤
        return Int(current)
    }
}

如果偏好更精简的写法,可以用三元运算符简化为单行闭包:

func convertValues(_ number: [String]) -> [Int] {
    number.compactMap { $0.isEmpty ? 0 : Int($0) }
}

效果验证

输入示例["1","2","","","x"]调用该方法后,输出结果为[1,2,0,0],完全符合所有转换规则。

内容的提问来源于stack exchange,提问作者Josué H.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:15:05