美文网首页
迭代器的概念

迭代器的概念

作者: 练习时长2年半的个人练习生 | 来源:发表于2020-06-27 13:19 被阅读0次

    什么是迭代器

    迭代器是一种代码组织模式,允许以一次一个的形式提取数据.
    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())
    

    相关文章

      网友评论

          本文标题:迭代器的概念

          本文链接:https://www.haomeiwen.com/subject/utgmfktx.html