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

Swift中如何获取循环当前位置以读取另一数组同索引元素

问题解决:Swift同步遍历两个数组对应位置元素

现有代码的问题

你当前的代码使用1..<colours.count作为循环区间,由于Swift数组下标从0开始,会直接漏掉两个数组的首元素(也就是下标为0的"Red"和1)。

正确实现方案

方案1:直接修正循环区间(适合确定两个数组长度完全一致的场景)

直接把循环起始值改成0即可:

let colours = ["Red", "Blue", "Green", "Green"]
let status = [1, 2, 2, 1]

func newFunc() {
    // 下标从0开始遍历
    for i in 0..<colours.count { 
        print(colours[i]) 
        print(status[i])
    }
}

方案2:用zip函数同步遍历(更安全,推荐)

zip会将两个数组按位置配对,自动以较短的数组长度为准,避免数组越界崩溃,不需要手动处理下标:

let colours = ["Red", "Blue", "Green", "Green"]
let status = [1, 2, 2, 1]

func newFunc() {
    for (colour, statusValue) in zip(colours, status) {
        print(colour)
        print(statusValue)
    }
}

方案3:用enumerated同时获取下标和元素

如果遍历过程中除了取对应status元素,还需要用到下标做其他操作,可以用enumerated()方法:

let colours = ["Red", "Blue", "Green", "Green"]
let status = [1, 2, 2, 1]

func newFunc() {
    for (index, colour) in colours.enumerated() {
        print("当前下标:\(index)")
        print(colour)
        print(status[index])
    }
}

注意事项

如果不能保证两个数组长度完全相等,不要使用按下标取值的方案1和方案3,否则会触发数组越界崩溃,优先选择zip方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:18:02