码迷,mamicode.com
首页 > 其他好文 > 详细

ES6—— iterator和for-of循环

时间:2018-08-05 15:52:08      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:nbsp   UNC   作用   style   tar   let   return   OLE   -o   

Iterator 遍历器的作用:
为各种数据结构,提供一个同意的,简便的访问接口。
是的数据结构的成员能够按某种次序排列。
ES6 新增了遍历命令 for...of 循环,Iterator接口主要供 for...of 消费。

 

1、手写Iterator接口。

 

  const arr=[ 1,2,3 ];
  function iterator(arr){
    let index=0;
    return {
      return index<arr.length?{value:arr[index++],done:false}:{value:undefined,done:true}
    }
  }
  const it=iterator(arr);
  console.log(it.next());
  console.log(it.next());
  console.log(it.next());
  console.log(it.next()); ///第四条 输出 undefined

 


2、凡是具有 Symbol.iterator 属性的数据结构都具有 Iterator 接口。

  const arr=[1,2,3];
  const set=new Set(["a","b","c"]);
  const map = new Map([["a":1]]);

  const itArr=arr[Symbol.iterator]();
  const itSetr=arr[Symbol.iterator]();
  const itMap =arr[Symbol.iterator]();

  console.log(itSet.next());
  console.log(itSet.next());
  console.log(itSet.next());
  console.log(itSet.next()); ///第四条 输出 undefined

  const obj = {};
  console.log(obj[Symbol.iterator]); 对于空的 直接输出 undefined

 


3、具备iterator接口的数据结构都可以进行如下操作
结构赋值。
扩展运算符。

  

  let str="miaov";
  let arrstr=[...str];
  console.log(arrstr); //输出 m.i . a.o.v

  const arr2=[1,"a","a","b","b"];
  console.log([...new set(arr2)]) ; //输出结构为 1,a,b

 


4、for...of 循环

 

  const ofArr=[1,2,3,4];
  for ( let i of ofArr){
    console.log(i);
  }
  const m = new Map();
  m.set("a",1).set("b",2)
  for(let[key,value] of m){
    console.log(key,value);
  }

 


//如何给一个不具备iterator结构的数据结构部署一个iterator接口?

 

const d={
  "0":"a",
  "1":"b",
  "2":"c",
  "3":"d",
  "4":"e",
  length:5
};

 

 

以上。

ES6—— iterator和for-of循环

标签:nbsp   UNC   作用   style   tar   let   return   OLE   -o   

原文地址:https://www.cnblogs.com/zyhbook/p/9425934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!