ES6 Iterator

来源:http://www.cnblogs.com/mengfangui/archive/2017/12/13/8033922.html
-Advertisement-
Play Games

1、概述 Iterator 的作用有三個:一是為各種數據結構,提供一個統一的、簡便的訪問介面;二是使得數據結構的成員能夠按某種次序排列;三是 ES6 創造了一種新的遍歷命令for...of迴圈,Iterator 介面主要供for...of迴圈。 2、Iterator 介面 ES6 的有些數據結構原生 ...


1、概述

Iterator 的作用有三個:一是為各種數據結構,提供一個統一的、簡便的訪問介面;二是使得數據結構的成員能夠按某種次序排列;三是 ES6 創造了一種新的遍歷命令for...of迴圈,Iterator 介面主要供for...of迴圈

2、Iterator 介面

ES6 的有些數據結構原生具備 Iterator 介面(比如數組),即不用任何處理,就可以被for...of迴圈遍歷。原因在於,這些數據結構原生部署了Symbol.iterator屬性,另外一些數據結構沒有(比如對象)。凡是部署了Symbol.iterator屬性的數據結構,就稱為部署了遍歷器介面。調用這個介面,就會返回一個遍歷器對象。

原生具備 Iterator 介面的數據結構如下。

  • Array
  • Map
  • Set
  • String
  • TypedArray
  • 函數的 arguments 對象
  • NodeList 對象

3、只要某個數據結構部署了 Iterator 介面,就可以對它使用擴展運算符,將其轉為數組。

let arr = [...iterable];

4、for...of

JavaScript 原有的for...in迴圈,只能獲得對象的鍵名,不能直接獲取鍵值。ES6 提供for...of迴圈,允許遍歷獲得鍵值。

var arr = ['a', 'b', 'c', 'd'];

for (let a in arr) {
  console.log(a); // 0 1 2 3
}

for (let a of arr) {
  console.log(a); // a b c d
}
  •  Set 結構和 Map 結構=遍歷的順序是按照各個成員被添加進數據結構的順序。其次,Set 結構遍歷時,返回的是一個值,而 Map 結構遍歷時,返回的是一個數組,該數組的兩個成員分別為當前 Map 成員的鍵名和鍵值。
  • entries() 返回一個遍歷器對象,用來遍歷[鍵名, 鍵值]組成的數組。對於數組,鍵名就是索引值;對於 Set,鍵名與鍵值相同。Map 結構的 Iterator 介面,預設就是調用entries方法。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近學習vue.js,下麵是筆記: 重點在3. 可能出現的問題: 1,首先我這邊歷經了慘痛的教訓後,建議各位vue學友,一定要使用Administrator,系統管理員身份登錄,不要使用二級管理員,很容易在安裝腳手架或者其他工具時,出現許可權問題,,登錄Administrator操作電腦後很多亂七八糟 ...
  • 前言 通常,jQuery的函數ajax進行Ajax調用。函數ajax只能做一個Ajax調用。當Ajax調用成功時,執行回調函數。可選地,當Ajax調用返回錯誤時,調用另一個回調函數。但是,該功能不能根據這些請求的結果進行多個Ajax請求和註冊回調函數。一種情況是,網頁使多個Ajax請求在禁用用戶交互 ...
  • 今天看到一個關於foo的一個面試題,趕腳特別有意思 ...
  • 1. 寫在前面 往常都是利用 Python/.NET 語言實現爬蟲,然現在作為一名前端開發人員,自然需要熟練 NodeJS。下麵利用 NodeJS 語言實現一個糗事百科的爬蟲。另外,本文使用的部分代碼是 es6 語法。 實現該爬蟲所需要的依賴庫如下。 1. request: 利用 get 或者 po ...
  • 前兩天有一個原來的同事問我文字描邊怎麼做,那麼今天我們就來說說文字描邊這個樣式怎麼實現. 一.文字描邊 -webkit-text-stroke 文字描邊 參數:參數1 描邊大小 參數2 描邊顏色 註意: webkit內核有效 只能使用在谷歌 ,safir有效 二.實例 上圖的效果我們怎樣來實現呢? ...
  • validateSchema模塊 首先來看錯誤檢測: 可以註意到,這裡傳了兩個參數,其實第一個參數來源於一個JSON文件: 這個JSON文件非常大,可以觀察一下部分內容: 從描述可以猜測,這裡的key對應options中的key,value就是檢測方式。 比如說entry放到required代表是必 ...
  • [1]代理模式結構 [2]圖片預載入 [3]單一職責原則 [4]合併HTTP請求 [5]虛擬代理在惰性載入中的應用 [6]緩存代理 [7]動態創建代理 [8]其他代理模式 ...
  • ul li { position:relative; display: table; width:3rem; height:3rem; background:url('image/defaultBg.jpg') 0 0/100% 100% no-repeat; float:le... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...