Swift中如何通过for循环按递增索引向数组插入元素?
解决数组循环插入指定位置的问题
嗨,这问题其实很好搞定!咱们先理清楚核心逻辑:你想要每次插入的索引从0开始,每插一次就递增1——换句话说,第1次插入到索引0,第2次插入到索引1,第3次到索引2,以此类推。这样就能让新插入的元素依次排在原数组的前面,完全符合你给出的示例效果。
具体实现代码
直接上代码示例,一看就明白:
// 初始化原数组 var originalArray = ["a", "b", "c", "d"] // 准备要插入的新元素集合 let elementsToInsert = ["e", "f", "g"] // 遍历要插入的元素,同时拿到当前循环的索引 for (insertPos, element) in elementsToInsert.enumerated() { originalArray.insert(element, at: insertPos) } print(originalArray) // 输出结果:["e", "f", "g", "a", "b", "c", "d"]
为什么这样可行?
咱们拆解每一步的变化,就懂其中的门道了:
- 第一次循环(
insertPos=0):把"e"插入到索引0,数组变成["e", "a", "b", "c", "d"] - 第二次循环(
insertPos=1):把"f"插入到索引1,数组变成["e", "f", "a", "b", "c", "d"] - 第三次循环(
insertPos=2):把"g"插入到索引2,数组变成["e", "f", "g", "a", "b", "c", "d"]
因为每次循环的insertPos刚好对应我们需要的插入位置——新元素插入后,原数组元素会被往后挤,而我们每次都在已插入元素的末尾、原数组的开头插入新元素,用循环自带的索引作为插入位置就刚刚好。
如果是逐个单独插入元素(不是批量处理),也可以用计数器手动控制索引:
var originalArray = ["a", "b", "c", "d"] var currentInsertPos = 0 // 插入第一个元素 originalArray.insert("e", at: currentInsertPos) currentInsertPos += 1 // 索引递增到1 // 插入第二个元素 originalArray.insert("f", at: currentInsertPos) currentInsertPos += 1 // 索引递增到2 // 后续插入操作以此类推...
内容的提问来源于stack exchange,提问作者Trung Nguyen
相关产品推荐
相关产品推荐

