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
};

以上。

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

时间: 2024-08-26 19:17:22

ES6—— iterator和for-of循环的相关文章

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

Iterator 和 for...of 循环 1.什么是 Iterator 接口 Iterator 接口功能:用一种相同办法的接口让不同的数据结构得到统一的读取命令的方式 2.Iterator的基本用法 见代码 3.for...of for...of 循环就是不断调用Iterator 接口来达到这种形式 一.Iterator 接口介绍 1.数组调用Iterator 接口,数组内部已实现,直接调用即可,false代表还有下一步,true 代表结束 2.自定义Iterator 接口(先遍历 star

ES6 之 Set数据结构和Map数据结构 Iterator和for...of循环

ECMAScript 6 入门 Set数据结构 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); [2, 3, 5, 4, 5, 2, 2].map(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 上面代码通过add方法向Set结构加入成员,结果表明Set结构不会添加重复的值. 向S

es6笔记(6) Iterator 和 for...of循环

概要 js中的数组.对象,加上ES6中增加的Map.Set四种数据集合. Iterator提供了一种机制,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作.(依次操作) 作用: 为各种数据结构提供了统一的,简便的访问接口. 使得数据结构的成员能够按照某种顺序排列. ES6中增加了遍历命令 for...of循环,Iterator接口主要供for...of消费 原理 创建一个指针对象,指向当前数据结构的起始位置. 遍历器对象本质上是一个指针. 第一

ES6的新特性(14)——Iterator 和 for...of 循环

Iterator 和 for...of 循环 Iterator(遍历器)的概念 JavaScript 原有的表示"集合"的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set.这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象.这样就需要一种统一的接口机制,来处理所有不同的数据结构. 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结

25.使用Iterator和增强型for循环遍历Map集合

/** * 宠物类,狗狗和企鹅的父类. */ public abstract class Pet { protected String name = "无名氏";// 昵称 protected int health = 100;// 健康值 protected int love = 0;// 亲密度 public abstract void eat(); //抽象方法eat(),负责宠物吃饭功能. /** * 无参构造方法. */ public Pet() { } /** * 有参构造

java中的Iterator与增强for循环的效率比较

最近在优化代码时遇到了这个问题:Iterator与增强for循环到底哪个效率高?之前在学习的时候,好像记着老师说过遍历集合(如list)时,使用iterator好像正规一些,因为是专用的,但是运行效率问题确实不曾考虑,今天做了一个实验:对两者进行了简单的比较,得出的结论是:增强for循环运行效率更高一些.但是我不确定这是否会代表全部情况,这里仅仅记录一下,做个参考,后期有新的认识再来补充,欢迎大家批评指正. 1 public static void main(String[] args) { 2

es6 javascript的Iterator 和 for...of 循环

1 Iterator( 遍历器) 的概念 JavaScript 原有的表示" 集合" 的数据结构, 主要是数组( Array) 和对象( Object), ES6 又添加了 Map 和 Set. 这样就有了四种数据集合, 用户还可以组合使用它们, 定义自己的数据结构, 比如数组的成员是 Map, Map 的成员是对象. 这样就需要一种统一的接口机制, 来处理所有不同的数据结构. 遍历器( Iterator) 就是这样一种机制. 它是一种接口, 为各种不同的数据结构提供统一的访问机制.

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

一.Iterator(它是一种接口,为各种不同的数据结构提供统一的访问机制.Iterator 接口主要供for...of消费) 默认Iterator接口(默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是"可遍历的"(iterable).Symbol.iterator属性本身是一个函数) 部署Iterator 接口: const obj = { [Symbol.iterator]

15.Iterator和for...of循环

1.Iterator(遍历器)的概念 JavaScript原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6又添加了Map和Set.这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象.这样就需要一种统一的接口机制,来处理所有不同的数据结构. 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依