ES6—— iterator和for-of循环

Posted zyhbook

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6—— iterator和for-of循环相关的知识,希望对你有一定的参考价值。

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循环的主要内容,如果未能解决你的问题,请参考以下文章

es6再回顾 info深入理解es6

ES6(Iterator 和 for...of 循环)

关于for of循环的用法和使用

详解js循环和ES6的iterator

es6笔记 Iterator 和 for...of循环

ES6学习之Iterator和For...of循环