ECMAScript6--16.Iterator

2017-10-23  本文已影响274人  飞菲fly

1.Iterator 和 for...of循环

2.Iterator用法

{
 let arr = ['hello','world'];
 let map = arr[Symbol.iterator]();
 console.log(map.next()); //Object{value:"hello",done:false}
 console.log(map.next()); //Object{value:"world",done:false}
 console.log(map.next()); //Object{value:undefined,done:true}
//返回了一个对象,有两个选项,一个value(数组的第一项),一个done(这循环是不是还有下一步),
 done:false;说明循环并没有结束,done:true没有下一步了; 
}

3.自定义Iterator接口

不管要遍历什么样的数据结构,这个数据结构可能复杂可能简单,如果想自定义部署这个方法,一定要按照这个操作;最后返回一个对象:这个对象要包含next()方法,next方法返回的值,是有两个一个value,一个done;

{
//遍历obj,达到先遍历start,在遍历end;
let obj ={
    start:[1,3,2],
    end:[7,9,8],
    [Symbol.iterator](){
        let self = this;
        let index = 0;
        let arr = self.start.concat(self.end);
        let len = arr.length;
        return{
            next(){
                if(index<len){
                    return {
                        value:arr[index++],
                        done:false
                    }
                }else{
                    return {
                        value:arr[index++],
                        done:true
                    
                    }
                }
            }
        
        }
    }

};   

for(let key of obj){
    console.log(key);
}
//遍历结果:
//1
//3
//2
//7
//9
//8
}

4.for...of循环

 {
  let arr = ['hello','world'];
  for(let value of arr){
      console.log('value',value);
  }
  //value hello
  //value world

}
上一篇 下一篇

猜你喜欢

热点阅读