【ES6】迭代器Iterator

JavaScript中的Iterator是一种特殊对象,它允许我们访问并操作对象的每一个元素。Iterator对象由具有next方法的对象创建,next方法返回一个包含两个属性的对象:value和done。value属性是当前元素的值,done属性是一个布尔值,当迭代结束时为true。

在JavaScript中,许多内建的集合对象,如数组、字符串、Map、Set等,都实现了迭代器接口。我们也可以自定义迭代器对象。

自定义迭代器

下面是一个简单的自定义迭代器的例子:

javascript 复制代码
function createIterator(array) {
  let nextIndex = 0;
  
  return {
    next: function() {
      return nextIndex < array.length ? { value: array[nextIndex++], done: false } : { done: true };
    }
  };
}

let iterator = createIterator([1, 2, 3]);

console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { done: true }

在这个例子中,我们定义了一个createIterator函数,它接收一个数组作为参数,并返回一个具有next方法的对象。next方法在每次调用时返回一个包含当前元素和done属性的对象,当所有元素都被访问后,done属性将为true。

使用for...of循环

在ES6中引入的for...of循环可以用于遍历具有next方法的对象,如上面的自定义迭代器:

javascript 复制代码
let iterator = createIterator([1, 2, 3]);

for (let value of iterator) {
  console.log(value); // 1, 2, 3
}

for...of循环会不断调用迭代器的next方法,直到返回的done属性为true。在每次迭代中,当前元素的值会被赋值给value变量,然后被输出到控制台。

内建迭代器

除了自定义迭代器,JavaScript还提供了许多内建的迭代器,如数组迭代器、Map迭代器和Set迭代器等。这些内建的迭代器都实现了Iterator接口,可以使用for...of循环进行遍历。

下面是一个使用数组迭代器的例子:

javascript 复制代码
let array = [1, 2, 3];

for (let value of array) {
  console.log(value); // 1, 2, 3
}

在这个例子中,for...of循环直接遍历了数组array。由于数组实现了Iterator接口,所以可以直接使用for...of循环。

相关推荐
李明卫杭州3 小时前
React 复合事件系统对比解析
前端·javascript·react.js
LEE4 小时前
前端转型全栈 01:数据建模,前端最大的盲区
前端·javascript·后端
雪芽蓝域zzs4 小时前
第四十七节:驾驶舱大屏 ECharts 图表集成
前端·javascript·vue.js
梦醒沉醉5 小时前
7、表达日期和时间(前朝遗老Date)
javascript
雪芽蓝域zzs6 小时前
第四十九节:TagsView 右键菜单(带三角箭头)给每个 tag 增加**鼠标右键菜单**(右键标签弹出:关闭、关闭其他、关闭全部)
前端·javascript·vue.js
এ慕ོ冬℘゜6 小时前
从零开发移动端医院挂号页面:适配、交互与前端实现详解
前端·javascript
宁渡AI大模型6 小时前
AI 全栈面试新趋势:Vibe Coding、前端、Java 后端高频面试题深度解析|河南宁渡科技有限公司编程教程
java·javascript·人工智能·python·ai大模型
东风微鸣7 小时前
AI依赖更新别裸奔🚨
javascript
研☆香7 小时前
echarts图表的使用方法
javascript
是立不是利8 小时前
大文件导致请求被拒的连锁反应
开发语言·前端·javascript