ES6中Iterator與for..of..遍歷用法分析
本文實(shí)例講述了ES6中Iterator與for..of..遍歷用法。分享給大家供大家參考,具體如下:
Iterator與for..of..遍歷
1.Iterator概念
遍歷器(Iterator)是一種接口,為各種不同的數(shù)據(jù)結(jié)構(gòu)提供統(tǒng)一的訪問機(jī)制。JS中有些數(shù)據(jù)結(jié)構(gòu)具備原生的Iterator接口。為了更好理解這個(gè)概念,我們也可以自己寫一個(gè)Iterator。
var it = simIteractor(['hi','ES5']); console.log(it.next()); //Object {value: "hi", done: false} console.log(it.next()); //Object {value: "ES5", done: false} console.log(it.next()); //Object {value: undefined, done: true} function simIteractor(array){ var nextIndex = 0; return{ next: function(){ return nextIndex < array.length ? {value: array[nextIndex++], done: false} : {value: undefined, done:true}; } }; }
2.ES6中規(guī)定,默認(rèn)的Iterator接口部署在數(shù)據(jù)結(jié)構(gòu)的Symbol.iterator屬性,或者說,一個(gè)數(shù)據(jù)結(jié)構(gòu)只要具有Symbol.iterator屬性就可以任務(wù)是可遍歷的。在ES6中,有3類數(shù)據(jù)結(jié)構(gòu)原生具備Iterator接口:數(shù)組、某些類似數(shù)組的對象、Set及Map。
3.提到可遍歷,就要說說遍歷的方法。
for...in... : for-in是為普通對象設(shè)計(jì)的,你可以遍歷得到字符串類型的鍵,因此不適用于數(shù)組遍歷。
For...of... : for-of循環(huán)用來遍歷數(shù)據(jù)—例如數(shù)組中的值。for-of循環(huán)也可以遍歷其它的集合
for-of循環(huán)不僅支持?jǐn)?shù)組,還支持大多數(shù)類數(shù)組對象,例如DOMNodeList。
for-of循環(huán)也支持字符串遍歷,它將字符串視為一系列的Unicode字符來進(jìn)行遍歷:
or (var chr of "abc"){ alert(chr); //依次彈出a,b,c }
它同樣支持Map和Set對象遍歷。如果你不知道Map 請看 http://chabaoo.cn/article/110048.htm,如果你不知道Set 請看 http://chabaoo.cn/article/110052.htm 。
希望本文所述對大家ECMAScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
js傳各種類型參數(shù)到Controller層的整理方式
這篇文章主要介紹了js傳各種類型參數(shù)到Controller層的整理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02基于JavaScript實(shí)現(xiàn)購物車功能
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)購物車功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02游戲開發(fā)中如何使用CocosCreator進(jìn)行音效處理
這篇文章主要介紹了游戲開發(fā)中如何使用CocosCreator進(jìn)行音效處理,并對音效組件進(jìn)行封裝,方便以后使用,同學(xué)們看完之后,一定要親手實(shí)驗(yàn)一下2021-04-04js獲取對象、數(shù)組的實(shí)際長度,元素實(shí)際個(gè)數(shù)的實(shí)現(xiàn)代碼
下面小編就為大家?guī)硪黄猨s獲取對象、數(shù)組的實(shí)際長度,元素實(shí)際個(gè)數(shù)的實(shí)現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在就分享 給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06