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

如何遍历Swift二维数组,将除最后一列外的元素改为字符串"1"?

Swift二维数组修改指定元素实现方案

针对你提出的需求,这里提供几种可行的实现思路:

方法一:嵌套循环遍历修改

这是最直观的实现方式,通过逐行逐列遍历,判断列索引是否为最后一列,仅修改非最后一列的元素:

var excelArray = [[String]](repeating: [String](repeating: "N/A", count: 10), count: 27)

// 遍历每一行
for rowIndex in 0..<excelArray.count {
    let columnCount = excelArray[rowIndex].count
    // 遍历当前行中除最后一列外的所有列
    for columnIndex in 0..<columnCount - 1 {
        excelArray[rowIndex][columnIndex] = "1"
    }
}

这种方式逻辑清晰,适合理解数组遍历的基础场景,能精准控制修改的范围。

方法二:函数式写法(map+数组拼接)

利用Swift的函数式特性,通过map生成新数组,结合数组拼接快速完成修改:

var excelArray = [[String]](repeating: [String](repeating: "N/A", count: 10), count: 27)

excelArray = excelArray.map { row in
    // 生成对应数量的"1"元素数组,拼接原行的最后一个元素
    Array(repeating: "1", count: row.count - 1) + [row.last!]
}

这种写法更符合Swift的风格,代码简洁紧凑,适合已经熟悉Swift集合操作的开发者。

方法三:子范围替换

通过replaceSubrange方法直接修改每行的指定范围元素,结合enumerated遍历行索引:

var excelArray = [[String]](repeating: [String](repeating: "N/A", count: 10), count: 27)

for (rowIndex, var row) in excelArray.enumerated() {
    let targetRange = 0..<row.count - 1
    // 替换指定范围的元素为"1"
    row.replaceSubrange(targetRange, with: Array(repeating: "1", count: targetRange.count))
    excelArray[rowIndex] = row
}

这种方式可以直接对行的子范围进行批量修改,操作效率较高。

注意事项

如果需要兼容空行或者列数为1的行(即没有非最后一列的情况),可以在修改前增加判断:

// 以方法一为例,增加判断
for rowIndex in 0..<excelArray.count {
    let columnCount = excelArray[rowIndex].count
    guard columnCount > 1 else { continue }
    for columnIndex in 0..<columnCount - 1 {
        excelArray[rowIndex][columnIndex] = "1"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:25:30