JavaScript Iterator遍歷器
在ES2015之前,我們要遍歷陣列通常會使用如下方式:
[JavaScript] 純文字檢視 複製程式碼var arr=["螞蟻部落",6,"www.softwhy.com"]; for(var index=0;index<arr.length;index++){ console.log(arr[index]); }
程式碼執行效果截圖如下:
上面程式碼很簡單,不做介紹。
ES2015新增了一個新的遍歷陣列方式,使用for of迴圈。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼let arr=["螞蟻部落",6,"www.softwhy.com"]; for(ele of arr){ console.log(ele); }
程式碼執行效果截圖如下:
與使用for迴圈實現了同樣的效果,關於for of可以參閱JavaScript for of迴圈一章節。
之所以陣列可以使用for of進行遍歷,是因為資料具有Iterator遍歷器介面,下面做一下介紹。
Iterator遍歷器介面不僅陣列具有,比如以下資料結構也具有:
(1).Set。
(2).Map。
(3).字串。
(4).TypedArray。
上述三種資料結構可以相互巢狀使用,也就是你中有我,我中有你,所以統一訪問介面非常必要。
現在列印一下資料的內部結構:
陣列物件具有Symbol.iterator屬性,它指向一個方法,呼叫此方法可以返回一個遍歷器物件。
遍歷器物件有其自身特點,下面將通過程式碼例項詳細介紹:
[JavaScript] 純文字檢視 複製程式碼let arr = ["螞蟻部落", 4, "www.softwhy.com", "青島市南區"]; let it = arr[Symbol.iterator](); console.log(it.next()); console.log(it.next()); console.log(it.next()); console.log(it.next()); console.log(it.next());
arr[Symbol.iterator]()返回一個遍歷器物件。
它是一個指標物件,預設情況下,它會指向所遍歷資料結構的開始位置。
遍歷過程分析如下:
(1).首次呼叫next方法,會將指標指向資料結構第一個成員,本例子是一個陣列(第一個成員是"螞蟻部落")。
(2).第二次呼叫指向第二個成員(成員是4),以此類推,直到資料結構的末尾。
每呼叫next方法一次都返回一個物件:
(1).返回的物件包含兩個屬性,value和done。
(2).value屬性值是資料結構成員的值,如果遍歷完成,value屬性值為undefined。
(3).done屬性值是布林型,false說明尚未完成遍歷,為true,表明已經完成。
新增自定義遍歷器介面:
有些資料結構是沒有遍歷器結構的,我們可以為它新增自定義遍歷器介面。
對於不具有遍歷器介面的類陣列物件,為其新增遍歷器介面的最簡單的方式就是直接新增陣列的遍歷器介面。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼let obj = { 0: "螞蟻部落", 1: "www.softwhy.com", 2: "青島市南區", length: 3, [Symbol.iterator]: Array.prototype[Symbol.iterator] }; for (let elem of obj) { console.log(elem); }
程式碼執行效果截圖如下:
相關文章
- es6 Iterator遍歷器
- PHP遍歷介面Iterator詳解PHP
- javascript遍歷方法總結JavaScript
- 設計模式系列之迭代器模式(Iterator Pattern)——遍歷聚合物件中的元素設計模式物件
- JavaScript遍歷物件方法總結JavaScript物件
- JavaScript 遍歷td單元格JavaScript
- JavaScript 遍歷、列舉與迭代JavaScript
- JavaScript遍歷陣列詳解JavaScript陣列
- 【JavaScript實用技巧(一)】迴圈遍歷與跳出迴圈遍歷JavaScript
- JavaScript中遍歷的幾種方法JavaScript
- JavaScript遍歷物件屬性順序JavaScript物件
- Python字典的遍歷,包括key遍歷/value遍歷/item遍歷/Python
- JavaScript中迴圈遍歷JSON響應!JavaScriptJSON
- JavaScript基礎 —— DOM:遍歷 與 範圍JavaScript
- JavaScript遍歷方法總結與對比JavaScript
- JavaScript遍歷陣列每一個元素JavaScript陣列
- JavaScript中的12種迴圈遍歷方法JavaScript
- js的map遍歷和array遍歷JS
- JavaScript淺談之迭代器(Iterator) 和for-of迴圈JavaScript
- JavaScript騷操作之遍歷、列舉與迭代(下篇)JavaScript
- JavaScript騷操作之遍歷、列舉與迭代(上篇)JavaScript
- 迭代器 iterator
- Iterator迭代器
- 遍歷 FlowDocument
- jQuery 遍歷jQuery
- Linuxshell遍歷Linux
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- 如何遍歷 HashMap,遍歷HashMap 的 5 種最佳方式HashMap
- jQuery的遍歷結構設計之遍歷同胞jQuery
- jQuery的遍歷結構設計之遍歷祖先jQuery
- JavaScript 的 4 種陣列遍歷方法: for VS forEach() VS for/in VS for/ofJavaScript陣列
- 迭代器模式(Iterator)模式
- TDictionary 的 遍歷
- jQuery 遍歷 – 祖先jQuery
- jQuery 遍歷方法jQuery
- 集合迭代/遍歷
- 資料遍歷
- jstl forEach遍歷JS