美文网首页
(二)19.Iterator和for...of循环19-08-1

(二)19.Iterator和for...of循环19-08-1

作者: 你坤儿姐 | 来源:发表于2019-08-15 17:45 被阅读0次
    • Iterator遍历
    {
      //iterator遍历
      //定义一个数组
      let arr=['hello','world'];
      //调用Iterator接口
      let map=arr[Symbol.iterator]();
      console.log(map.next());
      console.log(map.next());
      console.log(map.next());
    }
    
    {
      let obj={
        start:[1,3,2],
        end:[7,9,8],
        [Symbol.iterator](){
          let self=this;//self指向this
          let index=0;//记住当前遍历的索引
          let arr=self.start.concat(self.end);//将start和end数组合并
          let len=arr.length;//记住数组长度
          // 这里一定要返回一个对象
          return{
            //返回的对象上是有一个next方法的
            next(){
              //当前的索引小于数组长度的时候,返回当前值就可以了
              if (index<len){
                return {
                  value:arr[index++],
                  done:false  //done表示是不是已经结束了,false表示没有
                }
              }else {
                return{
                  value:arr[index++],
                  done:true
                }
              }
            }
          }
        }
      }
      //验证一下接口是否部署成功了
      for (let key of obj){
        console.log(key);
      }
    }
    

    打印结果:
    {value: "hello", done: false}
    {value: "world", done: false}
    {value: undefined, done: true}
    1
    3
    2
    7
    9
    8

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

    打印结果:
    value hello
    value world

    相关文章

      网友评论

          本文标题:(二)19.Iterator和for...of循环19-08-1

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