ES6新特性 Iterator和for of迴圈

2021-09-18 00:15:49 字數 1561 閱讀 4305

迭代過程

獲取迭代器(指向當前資料結構的起始位置)。

通過物件的某些方法返回迭代器物件。如:

多次呼叫iterator.next()向下迭代指向下乙個位置。

donetrue時遍歷結束。

如要重新迭代,需要重新獲取迭代器(從第1步重新開始)。

string

array

set

map

dom元素(開發中。。。)

obj

不同搭配,效能可能會有所差異。

以下依次為string, array, set, map類物件的迭代器訪問for…of迴圈訪問。

遍歷方式同上,唯一不同的是map.entries()返回的迭代器的next()方法返回的物件:

中,value為長度為2的陣列。

var map = new map().set(1, "one").set(2, "two");

var iterator = map.entries();

undefined

for (let i = 0; i < map.size; i++)

// 兩種for..of迴圈

for (let entry of map)

for (let [key, value] of map)

js中map物件的建立,遍歷(7種)和使用(增刪改查)

object不可迭代

可迭代的資料結構有:string, array, set, map

不可迭代的有:object,以及es6新增的weakset, weakmap(未定義obj[symbol.iterator]())。

arraylike類陣列物件

因為object無法被迭代。

但是有一種特殊物件,其屬性名稱中只有乙個length(屬性值為數值型別),其他屬性名稱都是數值,類似於陣列的索引(0, 1, 2, 3等)。

這種物件可以用array.from(obj)轉換為陣列物件,然後就可以對陣列進行迭代。

var arraylike = ; // object

var arr = array.from(arraylike); // array

console.log(arr);

// (4) ["zero", "one", undefined, "four"]

之後就可以對新得到的陣列arr進行遍歷

es6新特性 ES6新特性(一)

var 1 var宣告的是函式作用域 區域性 但在if for等定義的變數是全域性的 2 var 具有變數提公升,預解析 3 在同乙個作用域下,var可以宣告多次 4 var 宣告的變數會掛載到window上 let1 let不存在變數提公升,在變數使用之前,必須要先宣告 2 let在同一作用域下,...

ES6新特性須知

1.1es5之前函式想要賦預設值var funes5 function a,b,c 1.2es6開始函式想要賦預設值var funes6 function a 50,b 60,c 70 2.1es5之前字串拼接或者拼接屬性值只能如下var a lbj var b 50 var c name a ye...

es6新特性分享

1 字串查詢 es5使用是indexof 返回字元第一次出現的位置int值 es6新增了3個方法 includes startswith endwith 返回bool值 includes 是否包含字元 startswith 首字母是否包含字元 endwith 末尾是否包含字元 2 數值擴充套件 nu...