ES6中Iterator接口的代码示例讲解-5G云源码分享网

Posted by

如果下载的源码需要作者授权,请更换源码。

本站免费分享资源不会增加授权

本篇文章给大家带来的内容是关于ES6中Iterator接口的代码示例讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

es6中,操作某些数据结构(arrayobjectmapset)时,怎么用一个统一的方法操作,Iterator接口实现了这样的功能

1。

Iterator在数组中的应用

{letarr=[hello,world//数组内部实现了iterator接口,所以直接调用[Symbol。

iterator]()letmap=arr[Symbol。

iterator]();console。

log(map。

next());//{value:hello,done:false}console。

log(map。

next());//{value:world,done:false}console。

log(map。

next());//{value:undefined,done:true}//value表示数组元素,done表示循环是否有下一步状态,true:没有下一步了,false:循环没有结束}

2。

自定义Iterator接口

{//object没有内置iterator接口,自定义iterator接口,让obj也可以使用for。

ofletobj={start:[1,2,3],end:[4,5,6],//声明iterator接口方法[Symbol。

iterator](){//先遍历start,再遍历endletarr=this。

start。

concat(this。

end);letindex=0;//返回next()return{next(){if(indexarr。

length){return{value:arr[index++],done:false}}else{return{value:arr[index++],done:true}}}}}};//for。

of实现的原理就是不断调用Iterator接口//通过for。

of验证接口是否配置成功,如果没有配置成功,object就无法使用for。

of循环for(letkeyofobj){console。

log(key);//123456}}

3。

forof循环

{//数组内部实现了iterator接口,所以可以直接使用for。

of循环letarr=[hello,worldfor(letvalueofarr){console。