摘要:迭代器遍歷器提高訪問具有遍歷借口數(shù)據(jù)的效率相當(dāng)于指針默認(rèn)是可遍歷借口有方法將當(dāng)前指針移動到下個位置,返回一個對象數(shù)組默認(rèn)有迭代器屬性可以用在數(shù)組類數(shù)組類似于數(shù)組類數(shù)組自定義遍歷器普通循環(huán)遍歷迭代器遍歷遍歷遍歷用來遍歷對象
Iterator迭代器(遍歷器) 提高訪問具有遍歷借口數(shù)據(jù)的效率 相當(dāng)于指針(默認(rèn)是-1); 可遍歷借口 有next方法(next將當(dāng)前指針移動到下個位置,返回一個對象{value:,done:}) 數(shù)組默認(rèn)有迭代器屬性
var arr = [111,222,333]; var aa = arr[Symbol.iterator](); aa.next(); // { value: 111, done: false } aa.next(); // { value: 222, done: false } aa.next(); // { value: 333, done: false } aa.next(); // { value: undefined, done: true }可以用在 數(shù)組 Map Set 類數(shù)組
var m = new Set([11,22,33]);//set類似于數(shù)組 console.log(m); var qq=m[Symbol.iterator](); console.log(qq.next());//{value: 11, done: false}
var s = new Map([["name","shi"],["age",3]]); s.set("sex","nv") console.log(s); var i=s[Symbol.iterator](); console.log(i.next());類數(shù)組
var try=document.getElementsByName("div"); console.log(try);自定義遍歷器
var arr = [111,222,333]; function aa(arr){ var i=-1; function next(){ i++; let value; let done=false; if (i==arr.length) { value=undefined; done=true; }else{ value=arr[i]; } return{value:value,done:done}; } return {next:next}; } var zz=aa(arr); console.log(zz.next());//Object {value: 111, done: false} console.log(zz.next());//Object {value: 222, done: false} console.log(zz.next());//Object {value: 333, done: false} console.log(zz.next());//Object {value: undefined, done: true}for..of vs for...in 普通循環(huán)遍歷
var arr=[1,2,3,4,5,6]; for (var i = 0, l = arr.length; i迭代器遍歷{ console.log(i); })
var bb=arr[Symbol.iterator](); var cc=bb.next(); while(!cc.done){ console.log(cc.value); cc=bb.next(); }for of array 遍歷
for(var item of arr){ console.log(item); }for of set 遍歷
var s=new Set(["a","b","c"]); for(var item of s){ console.log(item); }for in 用來遍歷對象
// var obj={ x:1,y:2,z:3 } for(var i in obj ){ console.log(i)//x,y,z console.log(obj[i]);//x 1 y 2 z 3 }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88331.html
基本語法 下面列出了這幾個遍歷語法規(guī)則: for (let index = 0; index < array.length; index++) { const element = array[index] // ... } array.forEach(element => { // ... }) for (const key in array) { // ......
摘要:和循環(huán)遍歷器意義為四種數(shù)據(jù)集合,提供統(tǒng)一的接口機制來處理所有不同的數(shù)據(jù)結(jié)構(gòu)。調(diào)用函數(shù)返回一個遍歷器對象,代表函數(shù)的內(nèi)部指針。以后,每次調(diào)用遍歷器對象的方法,就會返回一個有著和兩個屬性的對象。 Iterator 和 for...of 循環(huán) Iterator(遍歷器)意義 為Array、Object、Map、Set四種數(shù)據(jù)集合,提供統(tǒng)一的接口機制來處理所有不同的數(shù)據(jù)結(jié)構(gòu) 。 任何數(shù)據(jù)結(jié)構(gòu),...
摘要:也就是說,遍歷器對象本質(zhì)上,就是一個指針對象。規(guī)定,默認(rèn)的接口部署在數(shù)據(jù)結(jié)構(gòu)的屬性,或者說,一個數(shù)據(jù)結(jié)構(gòu)只要具有屬性,就可以認(rèn)為是可遍歷的屬性本身是一個函數(shù),就是當(dāng)前數(shù)據(jù)結(jié)構(gòu)默認(rèn)的遍歷器生成函數(shù)。執(zhí)行這個函數(shù),就會返回一個遍歷器。 for...in遍歷對象的屬性或數(shù)組索引(ES5) eg1:遍歷數(shù)組 var arr=[a,b,c,d]; for(let index in...
摘要:定義兩者都是遍歷的方法,最先能想到的區(qū)別是,前者是遍歷鍵名,后者是遍歷鍵值。一種數(shù)據(jù)結(jié)構(gòu)只要部署了接口,就稱之為可遍歷的。中提供了一些具備原生接口的數(shù)據(jù)結(jié)構(gòu)包括函數(shù)的對象對象。 定義 兩者都是遍歷的方法,最先能想到的區(qū)別是,前者是遍歷鍵名,后者是遍歷鍵值??匆幌聝烧叩亩x: for...in 遍歷當(dāng)前對象的所有可枚舉屬性(包括自有屬性,從原型繼承的屬性),遍歷順序是無序的 for.....
摘要:有兩個協(xié)議可迭代協(xié)議和迭代器協(xié)議。為了變成可迭代對象,一個對象必須實現(xiàn)或者它原型鏈的某個對象必須有一個名字是的屬性迭代器協(xié)議該迭代器協(xié)議定義了一種標(biāo)準(zhǔn)的方式來產(chǎn)生一個有限或無限序列的值。 ECMAScript 2015的幾個補充,并不是新的內(nèi)置或語法,而是協(xié)議。這些協(xié)議可以被任何遵循某些約定的對象來實現(xiàn)。有兩個協(xié)議:可迭代協(xié)議和迭代器協(xié)議。 可迭代協(xié)議 可迭代協(xié)議允許 JavaScri...
閱讀 2710·2023-04-25 19:13
閱讀 4057·2021-09-22 15:34
閱讀 3067·2019-08-30 14:23
閱讀 1479·2019-08-29 17:17
閱讀 1619·2019-08-29 16:05
閱讀 1553·2019-08-29 13:26
閱讀 1228·2019-08-29 13:19
閱讀 568·2019-08-29 13:16