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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:34:58