es6遍歷及相關(guān)總結(jié)

一孝冒、Object(四種集合):無序

  • 遍歷自身及原型啤挎?
  • for in:遍歷自身及繼承可枚舉屬性。但es6規(guī)定票罐,所有 Class 的原型的方法都是不可枚舉的
  • 總結(jié):不適合遍歷。(會遍歷原型)
  • 遍歷自身所有泞边、symbol屬性该押、可枚舉:三種集合
  • 遍歷自身所有屬性(除symbol):Object.getOwnPropertyNames(obj)
  • 遍歷自身symbol屬性:getOwnPropertySymbols(obj)
  • 遍歷自身可枚舉屬性:assign、entries繁堡、keys沈善、values

遍歷順序

  • Chrome 瀏覽器:先數(shù)字,其它的按創(chuàng)建順序排序
  • 其它瀏覽器:按照創(chuàng)建順序排序
  • 總結(jié):對象的遍歷是無序的

二椭蹄、Array(一種原始闻牡,五種Es5迭代):

  • 原始:

for(let i=0;i<length;i++){}


  • Es5迭代(語義化,簡潔)
  • every 測試所有绳矩,返回布爾值
  • some 測試部分罩润,返回布爾值
  • filter 過濾,返回新數(shù)組
  • map 映射翼馆,返回新數(shù)組
  • forEach 迭代割以,修改自身
  • Es5迭代機制:內(nèi)部完成for迭代金度,用戶傳處理函數(shù)即可
    因此:我們在處理函數(shù),使用break或者return严沥,是沒辦法終止迭代的 2录!消玄!
  • 但我們可以利用some跟伏、every的機制來終止(個人不建議,語義會歧義)

  • 說明:雖然Array繼承于Object翩瓜,但Object的迭代不適合Array

三受扳、ES6新增的迭代器Iterator(提供統(tǒng)一接口)

一、 Iterator迭代器:

  • 類似es5的迭代兔跌。兩層函數(shù)勘高。
  • 由之前的自動迭代=>函數(shù)調(diào)用迭代(可控)
const obj = {
   randomName() {
    let index=0;
     return {
       next(){
           index+=1;
           if(index<3) return {value: 0,done: false}
           else return {value:1,done:true}
       }
     };
   }
 };
 const obj2=obj.randomName();//啟動迭代器,下面可控迭代
 console.log(obj2.next());//{ value: 0, done: false } 
 console.log(obj2.next());//{ value: 0, done: false }
 console.log(obj2.next());//{ value: 1, done: true }


二坟桅、 迭代工具for of:是Iterator迭代器的迭代工具

機制(對比手動使用Iterator华望,自動化執(zhí)行了以下4個步驟)

  • 默認會查找[Symbol.iterator]的函數(shù),作為迭代器
  • 啟動迭代器
  • 執(zhí)行迭代
  • 處理返回來的結(jié)果
  • done作為是否繼續(xù)迭代的條件(done:true時桦卒,終止迭代立美,及不再執(zhí)行for of主體)
  • value作為結(jié)果
const obj = {
   [Symbol.iterator]() {
    let index=0;
     return {
       next(){
           index+=1;
           if(index<3) return {value: 0,done: false}
           else return {value:1,done:true}
       }
     };
   }
 };
 for(item of obj){
     console.log(item);//0 0 即value作為結(jié)果。done:true時方灾,終止迭代建蹄,及不再執(zhí)行for of主體
 }
console.log("手動調(diào)用",obj[Symbol.iterator]().next());//手動調(diào)用 { value: 0, done: false }
  • 三、預(yù)設(shè)了[Symbol.iterator]迭代器的對象有:
  • Array
  • Map
  • Set
  • String
  • TypedArray
  • 函數(shù)的 arguments 對象
  • NodeList 對象

總結(jié):即對數(shù)組裕偿、類數(shù)組洞慎、String預(yù)設(shè)了迭代器

  • 四、會默認調(diào)用[Symbol.iterator]迭代器的場景有:
  • 解構(gòu)賦值:先對右邊裝包嘿棘,再迭代器劲腿,再匹配給左邊
  • 拓展運算符:先迭代器再轉(zhuǎn)化為需要的格式:如[...obj]即轉(zhuǎn)化為數(shù)組鸟妙,{...obj}即轉(zhuǎn)化為對象
    補充:
    object默認是沒有提供迭代器的焦人,但解構(gòu)賦值或者拓展的時候,會先轉(zhuǎn)化為Map再處理

  • generator生成器
  • 其它;Array.from()重父,Promise.all()花椭,Promise.race()等

四、 generator生成器

  • 和迭代器的關(guān)系
  • 迭代器是迭代屬性
  • 生產(chǎn)者房午,是生成迭代器的一個函數(shù):迭代的是被field分割的代碼塊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矿辽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袋倔,老刑警劉巖雕蔽,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宾娜,居然都是意外死亡批狐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門前塔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贾陷,“玉大人,你說我怎么就攤上這事嘱根。” “怎么了巷懈?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵该抒,是天一觀的道長。 經(jīng)常有香客問我顶燕,道長凑保,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任涌攻,我火速辦了婚禮欧引,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恳谎。我一直安慰自己芝此,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布因痛。 她就那樣靜靜地躺著婚苹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸵膏。 梳的紋絲不亂的頭發(fā)上膊升,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音谭企,去河邊找鬼廓译。 笑死,一個胖子當著我的面吹牛债查,可吹牛的內(nèi)容都是我干的非区。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼攀操,長吁一口氣:“原來是場噩夢啊……” “哼院仿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤歹垫,失蹤者是張志新(化名)和其女友劉穎剥汤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體排惨,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡吭敢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了暮芭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹿驼。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辕宏,靈堂內(nèi)的尸體忽然破棺而出畜晰,到底是詐尸還是另有隱情,我是刑警寧澤瑞筐,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布凄鼻,位于F島的核電站,受9級特大地震影響聚假,放射性物質(zhì)發(fā)生泄漏块蚌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一膘格、第九天 我趴在偏房一處隱蔽的房頂上張望峭范。 院中可真熱鬧,春花似錦瘪贱、人聲如沸纱控。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽其徙。三九已至,卻和暖如春喷户,著一層夾襖步出監(jiān)牢的瞬間唾那,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工褪尝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闹获,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓河哑,卻偏偏與公主長得像避诽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子璃谨,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 三沙庐,字符串擴展 3.1 Unicode表示法 ES6 做出了改進鲤妥,只要將碼點放入大括號,就能正確解讀該字符拱雏。有了這...
    eastbaby閱讀 1,519評論 0 8
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持棉安,譯者再次奉上一點點福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠铸抑,并抽取幸運大...
    HetfieldJoe閱讀 2,587評論 9 22
  • 特別說明贡耽,為便于查閱,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 661評論 0 1
  • 前言 本文作為對本書的一些知識點的收集 正文 1. LHS 和 RHS 當變量出現(xiàn)在賦值操作的左側(cè)時進行 LHS...
    sunxiaochuan閱讀 3,406評論 0 3
  • 記得之前去給企業(yè)做咨詢項目的時候,總會有那么幾個人不配合刁憋,對于這部分人滥嘴,二丫真的不知道怎么評價,說他們有什么問題至耻,...
    二丫的職場說閱讀 983評論 1 2