迭代器是一种特殊的对象。迭代器自带一个next()方法,我们取迭代器中的数据要用next方法。该方法返回一个对象{value:'迭代器元素',done:false},
如果done是false,表示迭代器还有元素,需要继续调用next迭代,如果done是true,则说明没有元素了。
取迭代器的内容用for of遍历
es5创建迭代器
function createIterator(arr){
let i =0;
return {
next:function(){
let done = i >= arr.length
let value = done?undefined:arr[i++]
return {
value,done
}
}
}
}
let iterator1 = createIterator([1,2,3,4,'a','b'])
let values = iterator1.next()
console.log(values) // { value: 1, done: false }
// 获取所有值
while(!values.done){
values = iterator1.next()
console.log(values)
}
es6创建迭代器
es6 Generator生成器可以返回一个迭代器函数 生成器就是函数前面加一个 * yield关键字创建迭代器的参数
{
function *createIterator(arr){
for(var i =0;i<arr.length;i++){
yield arr