Swift 3中不同for循环的区别解析:二者是否仅用于数组遍历?
两种数组遍历for循环的核心区别
嘿,这个问题问到点子上了!很多刚上手数组操作的开发者都会有这个困惑——不都是把数组过一遍吗?这俩循环咋还不一样?其实它们的设计初衷、适用场景和能提供的信息差得挺多,我给你拆解明白:
1. 传统索引式for循环
就是咱们最开始接触的这种写法:
const arr = [1, 2, 3]; for (let i = 0; i < arr.length; i++) { console.log(`索引:${i},元素:${arr[i]}`); }
它的核心是手动控制遍历的索引:
- 你能完全掌控遍历的节奏:比如想倒序遍历就改成
i = arr.length - 1; i >= 0; i--,想每隔一个元素遍历就i += 2; - 同时拿到索引和对应的元素,适合需要修改数组本身、或者依赖索引做逻辑的场景(比如根据索引判断元素位置);
- 缺点是语法相对繁琐,写起来要多敲几个字符。
2. for...of循环
这是ES6之后出来的更简洁的遍历方式:
const arr = [1, 2, 3]; for (const item of arr) { console.log(`元素:${item}`); }
它的核心是直接遍历数组的元素本身:
- 语法极度简洁,不用管索引、边界判断这些细节,专注处理元素就行,适合只需要操作元素值的场景;
- 它本质是遍历「可迭代对象」,除了数组,还能遍历字符串、Map、Set这些,通用性更强;
- 如果需要索引的话,也可以搭配
arr.entries()来拿:for (const [index, item] of arr.entries()) { console.log(`索引:${index},元素:${item}`); }
额外提醒:别搞混for...in!
很多人会把for...in也当成数组遍历工具,但它其实是用来遍历对象的可枚举属性的。数组作为特殊对象,用for...in会拿到字符串形式的索引,甚至可能遍历到数组原型链上的自定义属性,非常容易出bug,所以绝对不要用它遍历数组!
总结一下:
- 要控制遍历节奏、需要索引 → 用传统索引式for循环;
- 只处理元素、追求简洁通用 → 用for...of循环;
- 遍历数组绝对避开for...in!
内容的提问来源于stack exchange,提问作者user8276622
相关产品推荐
相关产品推荐

