You need to enable JavaScript to run this app. 如何在Swift中查找给定二维数组各子数组首项的最小值
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swift中查找给定二维数组各子数组首项的最小值

Swift 查找二维数组子数组首项最小值实现
  • 实现思路很直接:遍历二维数组,挨个对比每个子数组的第一个元素大小,既可以只拿到最小值结果,也能同步定位到这个最小值来自哪个子数组。

只需要获取最小值数值的最简写法

用Swift自带的高阶函数就能几行写完,不需要手写循环:

var arr = [[100,155],[150,199],[180,220],[50,290],[400,590]]
// 提取所有子数组的首项,过滤掉空数组的无效值,直接找最小值
let minFirstNum = arr.compactMap { $0.first }.min()
print(minFirstNum ?? 0) // 输出50

为啥用compactMap不用map?因为空的子数组调用first会返回可选空值,compactMap会自动把这类值过滤掉,不会出现嵌套可选值还要多一层解包的麻烦。

需要找到最小值对应的原始子数组

如果像示例需求那样,不光要知道最小值是50,还要定位到它来自[50,290]这个子数组,就不用多此一举生成中间的首项数组了,直接对比原数组的元素找就行:

if let matchSubArr = arr.min(by: { ($0.first ?? 0) < ($1.first ?? 0) }) {
    let minNum = matchSubArr.first ?? 0
    print("首项最小值是\(minNum),对应子数组是\(matchSubArr)")
    // 实际输出:首项最小值是50,对应子数组是[50, 290]
}

实际写代码要注意的边界问题

  • 代码里的?? 0是针对空数组的基础兜底,如果你的业务里遇到空子数组有特殊处理规则(比如跳过、直接报错),可以把这部分替换成对应逻辑
  • 如果你的原始二维数组本身是空的,上面两个方法的返回值都会是nil,一定要做可选值判断,别直接强制解包,很容易运行时崩溃

内容的提问来源于stack exchange,提问作者konya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 09:36:00