You need to enable JavaScript to run this app. 为什么randomElement()只从我的数组中返回同一个字符串?
优惠活动
大模型
产品
解决方案
定价
更多

为什么randomElement()只从我的数组中返回同一个字符串?

问题原因

你代码的核心问题出在随机池的数据源会被后续赋值操作修改:

  • 你构建随机数组cardOptions时用的是self.apple、self.cherry、self.star三个可变属性,第一次执行这段代码后,这三个属性会被全部赋值为同一个randomCard的值。
  • 下一次触发按钮点击执行代码时,cardOptions的三个元素已经完全相同,randomElement()不管怎么取,结果都只能是这唯一的相同值。如果第一次运行刚好随机到了star,后续所有点击的结果都会固定为star。
  • 如果首次运行就固定返回star,可以先检查print(cardOptions)的输出,确认第一次执行代码时,数组的三个元素是否已经是相同值,排查是否有其他前置逻辑提前修改了这三个属性的值。
修复方案

如果需求是每次点击都从三个原始选项中随机取值,直接用固定的原始值构建随机池即可,不要使用会被修改的实例属性作为随机源:

let cardOptions = ["apple", "cherry", "star"]
print(cardOptions)

let randomCard = cardOptions.randomElement()!
print(randomCard)

// 更新界面展示
self.apple = randomCard
self.cherry = randomCard
self.star = randomCard

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 23:15:07