JavaScript 中 for...of 循环迭代数组的正确姿势是什么

来源:站长论坛作者:河北彩花头衔:网络博主
导读:本期聚焦于小伙伴创作的《JavaScript 中 for...of 循环迭代数组的正确姿势是什么》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《JavaScript 中 for...of 循环迭代数组的正确姿势是什么》有用,将其分享出去将是对创作者最好的鼓励。

JavaScript 的 for...of 循环是 ES6 引入的专门用于可迭代对象的遍历语法,数组作为典型的可迭代对象,使用 for...of 迭代可以大幅简化代码逻辑,避免传统 for 循环手动维护索引的繁琐,也解决了 forEach 无法中断遍历的问题。掌握它的正确用法能让数组操作代码更简洁高效。

JavaScript 中 for...of 循环迭代数组的正确姿势是什么

for...of 迭代数组的基础用法

for...of 循环会直接遍历数组的每个元素值,不需要像传统 for 循环那样通过索引取值,语法结构非常清晰。基础使用示例如下:

// 定义一个测试数组
const fruits = ['苹果', '香蕉', '橙子', '葡萄'];
// 使用for...of遍历数组元素
for (const fruit of fruits) {
    console.log(fruit); // 依次输出:苹果、香蕉、橙子、葡萄
}

需要注意的是,for...of 遍历的是数组的元素值,而不是索引,如果需要同时获取索引和值,可以配合数组的 entries 方法使用。

获取迭代索引的正确方式

很多开发者误以为 for...of 无法直接获取索引,其实只要调用数组的 entries() 方法,就能同时拿到索引和对应的值,示例如下:

const scores = [85, 92, 78, 90];
// entries方法返回包含[index, value]的迭代器
for (const [index, score] of scores.entries()) {
    console.log(`第${index + 1}个成绩是:${score}`);
}
// 输出:
// 第1个成绩是:85
// 第2个成绩是:92
// 第3个成绩是:78
// 第4个成绩是:90

迭代过程中的中断与跳过

for...of 循环支持使用 breakcontinue 关键字,这是它比 forEach 方法更灵活的地方。如果需要提前结束遍历或者跳过某次迭代,可以直接使用这两个关键字:

const numbers = [1, 2, 3, 4, 5, 6];
// 跳过偶数,遇到大于4的数就停止遍历
for (const num of numbers) {
    if (num % 2 === 0) {
        continue; // 跳过偶数
    }
    if (num > 4) {
        break; // 大于4时中断循环
    }
    console.log(num); // 输出:1、3
}

异步迭代的正确处理

如果数组中的元素是异步操作,直接使用 for...of 遍历会出现问题,因为 for...of 本身不会等待异步操作完成。正确的做法是配合 async/await 使用,示例如下:

// 模拟异步请求函数
function fetchData(id) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(`数据${id}加载完成`);
        }, 1000);
    });
}

const ids = [1, 2, 3];
// 异步遍历数组,等待每个异步操作完成再执行下一个
async function loadAllData() {
    for (const id of ids) {
        const result = await fetchData(id);
        console.log(result);
    }
}
loadAllData();
// 依次输出(每个间隔1秒):数据1加载完成、数据2加载完成、数据3加载完成

for...of 与其他迭代方式的对比

为了更清楚 for...of 的适用场景,我们将它和常见的数组迭代方式做对比:

迭代方式可获取值可中断适用场景
传统 for 循环索引、值需要复杂索引操作的场景
forEach 方法值、索引、原数组不需要中断的简单遍历
for...of 循环值(配合entries可获取索引)需要中断、异步遍历的场景

使用注意事项

  • for...of 只能遍历可迭代对象,普通对象如果没有实现迭代器接口,不能直接用 for...of 遍历,否则会报错。
  • 遍历过程中如果修改数组长度,可能会影响遍历结果,建议遍历前先拷贝数组,或者避免在遍历中修改原数组。
  • 如果需要遍历数组的键,可以使用 for...in 循环,但 for...in 会遍历到数组的自定义属性,不适合纯数组值遍历,优先使用 for...of。

JavaScriptfor...of数组迭代循环语法修改时间:2026-07-21 12:09:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。