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

Swift中将数组拆分为两个子数组出错,如何修正代码?

问题分析与修正

你的代码核心错误有两个:

  • 你把数组的索引值(i)直接添加到了firstArray和secondArray里,而不是取totalArray中对应索引的元素值
  • append(contentsOf: [i])属于冗余写法,单个元素直接用append()就够了

修正后的循环版本代码:

let totalArray = [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10]

var firstArray = [Int]()
var secondArray = [Int]()

for i in totalArray.indices {
    if i <= totalArray.count/2 {
        firstArray.append(totalArray[i]) // 改为取对应索引的元素
    } else {
        secondArray.append(totalArray[i])
    }
}

print(firstArray)  // 输出 [20, 19, 18, 17, 16, 15]
print(secondArray) // 输出 [14, 13, 12, 11, 10]

更简洁的Swift风格写法

Swift数组自带prefix和suffix方法,能直接拆分数组,不用手动写循环:

let totalArray = [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10]
let splitIndex = totalArray.count / 2 + 1 // 数组长度为奇数,前半部分多一个元素

let firstArray = Array(totalArray.prefix(splitIndex))
let secondArray = Array(totalArray.suffix(from: splitIndex))

print(firstArray)  // [20, 19, 18, 17, 16, 15]
print(secondArray) // [14, 13, 12, 11, 10]

这里因为totalArray长度是11(奇数),totalArray.count/2等于5,所以前半部分取前6个元素,后半部分从索引6开始取剩余元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:01:07