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

Swift:删除数组中不含originals子串元素失败,求Java式循环实现

问题原因及解决方法

你的代码没生效是因为正向遍历数组时删除元素会导致索引移位:当你删除某个位置的元素后,后面的所有元素都会向前移动一位,而循环的position还在递增,这就会跳过原本应该检查的元素,导致很多该删的项没被处理。

要实现类似Java的for i循环逻辑,你需要从数组末尾开始反向遍历,这样删除元素不会影响前面未检查的元素索引:

// 示例数组
var imageURLs = ["pic-originals.png", "photo.jpg", "art-originals.jpeg", "drawing.gif"]

// 反向遍历数组索引
for i in stride(from: imageURLs.count - 1, through: 0, by: -1) {
    if !imageURLs[i].contains("originals") {
        imageURLs.remove(at: i)
    }
}

print(imageURLs) // 输出 ["pic-originals.png", "art-originals.jpeg"]

为什么反向遍历可行?

从数组最后一位开始往前检查,删除当前元素后,前面的元素索引不会发生变化,每一个元素都能被正确检查到,不会出现跳过的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:45:29