迭代器的概念

2020-06-27  本文已影响0人  练习时长2年半的个人练习生

什么是迭代器

迭代器是一种代码组织模式,允许以一次一个的形式提取数据.
ES6 实现的是为迭代器引入一个隐式的标准化接口。JavaScript 很多内建的数据结构现在都提供了实现这个标准的迭代器。
如 数组 map set string等.

应用场景

例如把迭代器附着在一个数据库查询结果上,每次迭代拉出一个新行

for of 的本质

for (var v, res; (res = it.next()) && !res.done; ) { 
    v = res.value; 
    console.log( v ); 
}
迭代器相关

数组也是对象 ,继承于Object数组有内置的 @@iterator,因此 for..of 可以直接应用在数组上 ,Object没有迭代器属性,所以不能直接用for of

用for of, 遍历数组 和使用迭代器的next

  let arr = ['a','b','c'];
  for(val of arr){
      console.log(val)  //a   b c
  }
   let it = arr[Symbol.iterator]()
   console.log(it.next())
  // {value: "a", done: false}

自己实现一个迭代器,使对象具有迭代功能

  let person = {
            name:'张三',
            age:14,
            sex:'男',
        }
        Object.defineProperty(person,Symbol.iterator,{
            enumerable:false,
            value:function(){
                let keys = Object.keys(this);
                let len = keys.length;
                let idx = 0;                
                return{
                    next:()=>{
                       return{
                            value:this[keys[idx++]],
                            done:idx >= len
                        }
                    }
                }
            }

        })
        let it = person[Symbol.iterator]()
       console.log( it.next())
       console.log( it.next())
       console.log( it.next())
       console.log( it.next())
       console.log( it.next())
上一篇下一篇

猜你喜欢

热点阅读