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.values
是array.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 函式呼叫並不斷返回下乙個值的物件。二 如...
物件 可迭代物件 迭代器
本節是對可迭代物件和迭代器的簡單總結,希望對大家有幫助。對於乙個初級選手而言,了解即可,不過這對大家以後高階可能會有一定的幫助。悅分享,越快樂。我們一起成長。哈啊哈哈。物件,乙個實實在在存在的值 可迭代 更新迭代,迴圈的乙個過程,每乙個內容都是新的 可迭代物件 可以進行迴圈更新的乙個實實在在的值。專...