js中的迭代器,可迭代物件

2021-10-04 07:25:46 字數 2687 閱讀 4034

1.1 判斷是否擁有可迭代能力

console.

log(array.prototype.

hasownproperty

(symbol.iterator));

console.

log(set.prototype.

hasownproperty

(symbol.iterator)

);

1.2 手動實現迭代器
const

createiterator

= items =>}}

}

let list =[1

,2,3

,4];

let listiterator =

createiterator

(list)

;listiterator.

next()

listiterator.

next()

listiterator.

next()

listiterator.

next()

listiterator.

next()

// logout

let obj =

;let objiterator =

createiterator

(obj)

;objiterator.

next()

objiterator.

next()

objiterator.

next()

// logout

1.3 為什麼資料是可迭代物件,卻不能使用next()

可迭代物件不是迭代器,迭代器才有next()方法。

1.4 將不可迭代的資料轉換可迭代資料

嘗試使用for...of

直接修改物件原型屬性

開發中,不會直接去修改原型。

object.prototype[symbol.iterator]

=function()

}}}let obj =

;let objitem = obj[symbol.iterator]()

;console.

log(objitem.

next()

);for(

const item of obj)

var arr =

["a",,

"c"]

;var sparsekeys = object.

keys

(arr)

;var densekeys =

[...arr.

keys()

];console.

log(sparsekeys)

;// ['0', '2']

console.

log(densekeys)

;// [0, 1, 2]

const array1 =

['a'

,'b'

,'c'];

const iterator = array1.

values()

;for

(const value of iterator)

// a b c

array.prototype.valuesarray.prototype[symbol.iterator]的預設實現。

var arr =

['a'

,'b'

,'c'

,'d'];

var iterator = arr.

values()

;for

(let letter of iterator)

//"a" "b" "c" "d"

for(

let letter of iterator)

// undefined

entries()方法返回乙個新的array iterator物件,該物件包含陣列中每個索引的鍵/值對。

const array1 =

['a'

,'b'

,'c'];

const iterator1 = array1.

entries()

;console.

log(iterator1.

next()

.value)

;// expected output: array [0, "a"]

console.

log(iterator1.

next()

.value)

;// expected output: array [1, "b"]

迭代器 可迭代物件 迭代器物件

今天的學習內容有 迭代器 可迭代物件 迭代器物件 for迴圈內部原理 生成器和生成器表示式 面向過程程式設計 迭代就是指更新換代的過程,要重複進行,而且每次的迭代都必須基於上一次的結果。我們使用for迴圈的時候就是把元素從容器裡乙個個取出來,這種過程其實就是迭代。迭代器 迭代取值的工具。迭代器的作用...

可迭代物件 迭代器

一 可以直接作用於for迴圈的資料型別 1.可迭代物件 iterable 1 整合資料型別 list tuple dict set str 2 生成器 generator 3 帶yield的generator函式 2.迭代器 iterator 可以被next 函式呼叫並不斷返回下乙個值的物件。二 如...

物件 可迭代物件 迭代器

本節是對可迭代物件和迭代器的簡單總結,希望對大家有幫助。對於乙個初級選手而言,了解即可,不過這對大家以後高階可能會有一定的幫助。悅分享,越快樂。我們一起成長。哈啊哈哈。物件,乙個實實在在存在的值 可迭代 更新迭代,迴圈的乙個過程,每乙個內容都是新的 可迭代物件 可以進行迴圈更新的乙個實實在在的值。專...