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

Swift中数组打乱后,如何更新变量为指定字符串的新索引值?

解决数组打乱后更新变量为指定元素索引的问题

要实现把变量zero更新为字符串"zero"在打乱后数组中的新索引,其实很简单,利用Swift数组内置的firstIndex(of:)方法就能搞定,具体步骤如下:

核心思路

数组打乱后,我们只需要找到目标元素(这里是"zero")在数组中的位置,再把这个位置的值赋值给变量zero即可。因为你的数组中每个元素都是唯一的,所以firstIndex(of:)会精准返回目标元素的索引。

具体代码实现

结合你提供的代码,修改后的完整逻辑如下:

weak var numberwordimage: UIImageView! 
var numberwords = ["zero", "one", "two", "three", "four", "five"] 
var zero = 0 

extension Array { 
    public mutating func shuffle() { 
        for i in stride(from: count - 1, to: 1, by: -1) { 
            let random = Int(arc4random_uniform(UInt32(i+1))) 
            if i != random { 
                self.swapAt(i, random)
            }
        }
    } 
} 

// 打乱数组
numberwords.shuffle()

// 更新zero变量为"zero"在数组中的新索引
if let newZeroIndex = numberwords.firstIndex(of: "zero") {
    zero = newZeroIndex
} else {
    // 兜底处理:如果数组中意外没有"zero",给个默认值
    zero = 0
}

代码解释

  • numberwords.firstIndex(of: "zero"):这个方法会遍历数组,返回第一个匹配"zero"的元素的索引,类型是Optional<Int>(因为可能找不到元素)。
  • 用可选绑定if let来安全处理可选值:如果找到索引,就把它赋值给zero;如果没找到(虽然你的场景里几乎不会发生),就给zero设置默认值0。
  • 如果你能100%确定数组中一定存在"zero",也可以用强制解包简化代码:zero = numberwords.firstIndex(of: "zero")!,但这种写法在元素不存在时会崩溃,所以更推荐安全的可选绑定写法。

比如你假设的打乱后数组是["five", "four", "two","one","zero","three"],执行这段代码后,zero的值就会被更新为4,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:32:20