iterator 迭代器
// 自制迭代器
function makeIterator(arr) {
let index = 0
return {
next(){
index++;
if(index-1<arr.length){
return {
value:arr[index-1],
done:false,
};
}else{
return {
value:undefined,
done:true,
};
}
}
};
}
let myIter = makeIterator(["a","b"]);
console.log(myIter.next()); // {value: "a", done: false}
console.log(myIter.next()); // {value: "b", done: false}
console.log(myIter.next()); // {value: undefined, done: true}
console.log(myIter.next()); // {value: undefined, done: true}
// 数组上的 迭代器
let arr = ["yi","er"];
let arrIterator = arr[Symbol.iterator]();
console.log(arrIterator.next()); // {value: "yi", done: false}
console.log(arrIterator.next()); // {value: "er", done: false}
console.log(arrIterator.next()); // {value: undefined, done: true}
// Set 上的 迭代器
let s = new Set(["s1","s2"]);
let sIter = s[Symbol.iterator]();
console.log(sIter.next()); // {value: "s1", done: false}
console.log(sIter.next()); // {value: "s2", done: false}
console.log(sIter.next()); // {value: undefined, done: true}