ES6迭代器具有如下特征: 1.迭代器返回一个对象; 2.该对象有一个 next() 方法; 3.调用该方法会返回一个对象; 4.该对象包含两个属性,value 和 done 5. value 表示返回的值,遍历完之后一直返回 undefined; 6. done 表示是否遍历结束。
let myIterator = (arr) => {
let index = 0
return {
next: () => {
return {
value: arr[index++] || undefined,
done: index > arr.length
}
}
}
}
// test
let arr = [1, 4, 'ads']
let iteratorObj = myIterator(arr)
console.log(iteratorObj.next()) // { value: 1, done: false }
console.log(iteratorObj.next()) // { value: 4, done: false }
console.log(iteratorObj.next()) // { value: 'ads', done: false }
console.log(iteratorObj.next()) // { value: undefined, done: true }
console.log(iteratorObj.next()) // { value: undefined, done: true }