ES6之Iterator和for...of

来源:互联网 发布:快速选择中值算法 编辑:程序博客网 时间:2024/06/05 01:57
补充知识:ES6中对象允许用表达式作为对象的属性名。
let obj = {    [propKey]:'zhang',    [propValue]:'Greta';}

什么是Iterator

是一种接口,为各种不同类型的数据结构提供统一的访问机制。任何数据结构,只要部署Iterator接口,就可以完成遍历。

Iterator的基本用法

let arr = ['hello','world'];let map = arr[Symbol.iterator]();console.log( map.next());console.log( map.next());console.log( map.next());
Symbol.iterator是方法名称,后面()表示方法要执行,返回一个对象map。

  每一次调用next方法,都会返回数据结构的当前成员。具体来说,就是返回一个包含value和done两个属性的对象。
  其中,value属性是当前成员的值,done属性是一个布尔值。

let obj = {        start:[1,3,2],        end:[7,8,9],        // 声明iterator接口方法        [Symbol.iterator](){            let self = this;            let index = 0;            let arr = (self.start).concat(self.end);//concat() 方法用于连接两个或多个数组。            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);    }
运行结果:

运行结果

for…of

很简单,不多说了

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