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

如何用for循环从起始位置开始跳过数组中指定数量的元素?

Swift 实现数组按指定规则跳过元素的遍历

问题说明

给定这个Int类型数组:

let array: [Int] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

需要编写一个for循环,从起始位置开始每隔2个元素进行跳过操作,预期输出结果为:

0, 1, 4, 5, 8, 9, 12, 13, 16, 17

先看一个错误示例(逻辑不符合需求):

var result: [Int] = []
for i in stride(from: 0, to: array.count, by: 2) {
    result.append(i)
}
print(result)

正确实现方案

先明确需求逻辑:每连续取2个元素,就跳过接下来的2个元素,重复这个操作直到数组末尾。

可以通过控制索引步长来实现,代码如下:

let array: [Int] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
let takeCount = 2 // 每次要取的元素个数
let skipCount = 2 // 每次要跳过的元素个数
var result: [Int] = []

// 外层循环控制每组的起始索引,步长为取的数量加跳过的数量
for i in stride(from: 0, to: array.count, by: takeCount + skipCount) {
    // 内层循环将当前组的元素加入结果数组
    for j in 0..<takeCount {
        let currentIndex = i + j
        // 防止数组越界,索引超出则停止当前组的添加
        guard currentIndex < array.count else { break }
        result.append(array[currentIndex])
    }
}

// 输出格式化后的结果
print(result.map { String($0) }.joined(separator: ", "))

代码解释

  • 外层用stride控制索引跳转,步长设为takeCount + skipCount,确保每次循环直接定位到下一组要取元素的起始位置,自动跳过指定数量的元素。
  • 内层循环负责将当前组的元素逐个加入结果,guard判断是为了处理数组末尾元素不足一组的情况,避免越界访问。
  • 最后通过map和joined将结果数组格式化为预期的字符串形式输出。

灵活调整

如果需要修改规则(比如每取1个元素跳过3个),只需调整takeCount和skipCount的数值即可,核心逻辑无需改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:37:03