首页 > web前端 > js教程 > 正文

JavaScript迭代器_javascript遍历方法

betcha
发布: 2025-12-02 20:03:35
原创
875人浏览过
迭代器是JavaScript中通过next()方法访问集合元素的设计模式,返回包含value和done的对象;for循环适用于索引操作,for...of遍历可迭代对象的值,forEach执行回调但不可中断,map生成新数组,for...in用于对象属性遍历,Object.keys结合forEach可枚举自身属性;实现Symbol.iterator可使对象可迭代,内置可迭代类型包括Array、String、Map、Set等,支持for...of和扩展运算符。

javascript迭代器_javascript遍历方法

JavaScript 中的迭代器和遍历方法是处理数据集合的核心机制。理解它们能帮助你更高效地操作数组、对象和其他可迭代结构。

什么是迭代器(Iterator)

迭代器是一种设计模式,允许你访问集合中的元素而无需暴露其底层结构。在 JavaScript 中,一个迭代器是一个对象,它实现了 next() 方法,返回包含 valuedone 两个属性的对象。

done 为 true 时,表示遍历结束;否则继续通过 value 获取当前值。

你可以手动创建一个迭代器:

立即学习Java免费学习笔记(深入)”;

const arr = [1, 2, 3];
const iterator = arr[Symbol.iterator]();
<p>iterator.next(); // { value: 1, done: false }
iterator.next(); // { value: 2, done: false }
iterator.next(); // { value: 3, done: false }
iterator.next(); // { value: undefined, done: true }
登录后复制

常见的遍历方法

JavaScript 提供了多种方式来遍历数组或类数组结构,每种方法适用不同场景。

1. for 循环 — 最基础的方式,适合需要索引的操作。

for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}
登录后复制

2. for...of 循环 — 遍历可迭代对象(如数组、字符串、Map、Set),直接获取值。

for (const item of arr) {
  console.log(item);
}
登录后复制

3. forEach() — 数组方法,执行回调函数对每个元素进行操作,不能中断(return 不会跳出循环)。

青泥AI
青泥AI

青泥学术AI写作辅助平台

青泥AI 302
查看详情 青泥AI
arr.forEach(item => {
  console.log(item);
});
登录后复制

4. map() — 创建一个新数组,结果是原数组每个元素调用函数后的返回值。

const doubled = arr.map(x => x * 2);
登录后复制

5. for...in — 主要用于遍历对象的可枚举属性,不推荐用于数组(因为可能遍历到意外的属性)。

const obj = { a: 1, b: 2 };
for (const key in obj) {
  console.log(key, obj[key]);
}
登录后复制

6. Object.keys() + forEach — 遍历对象的所有自身可枚举属性键。

Object.keys(obj).forEach(key => {
  console.log(key, obj[key]);
});
登录后复制

可迭代协议与自定义对象遍历

任何对象只要实现 [Symbol.iterator] 方法,就可以被 for...of 或扩展运算符使用。

例如,让一个普通对象支持遍历:

const myIterable = {
  data: ['a', 'b', 'c'],
  [Symbol.iterator]() {
    let index = 0;
    return {
      next: () => {
        if (index < this.data.length) {
          return { value: this.data[index++], done: false };
        }
        return { done: true };
      }
    };
  }
};
<p>for (const item of myIterable) {
console.log(item); // 输出 a, b, c
}
登录后复制

哪些类型默认可迭代?

以下内置类型实现了可迭代协议:

  • Array
  • String
  • Map
  • Set
  • arguments 对象
  • NodeList 等 DOM 集合(部分环境)

这意味着它们都能用 for...of... 扩展、Array.from() 等方式处理。

基本上就这些。掌握迭代器原理和各种遍历方法的区别,能让你写出更清晰、高效的代码。

以上就是JavaScript迭代器_javascript遍历方法的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号