当前位置:网站首页>ES6迭代器解释举例
ES6迭代器解释举例
2022-08-02 03:24:00 【yorup】
迭代器
迭代器(lterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署lterator接口,就可以完成遍历操作,ES6新增遍历方式for...of。
原生具备lterator接口的数据有:Array,Arguments,Set,Map,String,NodeList。
对象没有迭代器接口,但是我们可以给它加一个,迭代器就是数据类型里面自带的的方法,所以给对象添加一个方法为迭代器接口就可以了
注意不要改变方法的名字。因为for...of只能识别next()方法。
原理:创建一个指针对象,指向数据结构的起始位置,第一次调用==next()==方法,指针自动指向数据结构第一个成员,接下来不断调用next(),指针一直往后移动,直到指向最后一个成员,没调用next()返回一个包含value和done属性的对象.
let arr = ["a","b","c"];
let myIte = arr[Symbol.iterator]();//arr本身就具备迭代器接口,拿到这个iterator接口
console.log(myIte.next());//{value: "a", done: false}
console.log(myIte.next());//{value: "b", done: false}
console.log(myIte.next());//{value: "c", done: false}
console.log(myIte.next());//{value: "undefined", done: true}const Stu = {
title:"web2209",
persons:["张三","李四","王五"],
[Symbol.iterator](){
let i=0;
return {
next:()=>{
if(i< this.persons.length){
const Obj = {value: this.persons[i], done: false};
i++;
return Obj;
}else{
return {value: undefined, done: true};
}
}
}
}
}上面为对象添加了迭代器接口方法[Symbol.iterator](),下面是调用,先打印一下
const Myite = Stu[Symbol.iterator]();
console.log(Myite.next());
console.log(Myite.next());
console.log(Myite.next());
console.log(Myite.next());
下面是用for...of遍历对象里面的值
for(let v of Stu){
console.log(v);
}
边栏推荐
猜你喜欢

PCL—point cloud data segmentation

String comparison size in MySQL (date string comparison problem)

Amazon sellers how to improve the conversion

Debian 10 NTP Service Configuration

你的本地创建的项目库还在手动创建远端代码仓库再推送吗,该用它了

C语言的变长数组

5.19今日学习

啃瓜记录第一天

面试总结 22/7/22 面试中的重点

Phospholipid-polyethylene glycol-targeted neovascularization targeting peptide APRPG, DSPE-PEG-APRPG
随机推荐
Guangzhou Huawei Interview Summary
sh: 1: curl: not found
Phospholipid-polyethylene glycol-hydrazide, DSPE-PEG-Hydrazide, DSPE-PEG-HZ, MW: 5000
新工程加载YOLOV6的预训练权重问题
L1-043 阅览室 (20分)
L1-020 帅到没朋友 (20分)
微信小程序云开发如何将页面生成为pdf?
Detailed explanation of the usage of exists in mysql
每日五道面试题总结 22/7/20
正则笔记(1)- 正则表达式字符匹配攻略
配置mmdet来训练Swin-Transformer之一配置环境
Source Insight 使用教程(2)——常用功能
每日五道面试题总结 22/7/26
DOM manipulation---magnifying glass case
解决MySQL创建子视图并查看的时候,字符集报错问题
pyppeteer使用样例脚本
js预编译 GO 和AO
String comparison size in MySQL (date string comparison problem)
暴力方法求解(leetcode14)查找字符串数组中的最大公共前缀
客户评分控件