自定义迭代器函数
function createIterator(items) {
var i = 0;
return {
next() {
var done = i >= items.length;
var value = done ? void 0 : items[i];
i++;
return {
value,
done,
};
},
};
}
let arr = [1, 2, 3];
let iterator = createIterator(arr);
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
使用function* fun(){}创建迭代器
function *createIterator(arr) {
for (let index = 0; index < arr.length; index++) {
console.log(index);
yield arr[index];
}
}
let arr = [1, 2, 3];
let iterator = createIterator(arr);
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
如何使用for…of遍历对象?
let obj = {
items: [],
*[Symbol.iterator]() {
for (const iterator of this.items) {
yield iterator;
}
},
};
obj.items = [1, 2, 3];
for (const iterator of obj) {
console.log(iterator);
}