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

2019-08-15  本文已影响0人  你坤儿姐
{
  //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 循环
  let arr=['hello','world'];
  for (let value of arr){
    console.log('value',value);
  }
}

打印结果:
value hello
value world

上一篇下一篇

猜你喜欢

热点阅读