ES6:迭代器

Iterator

Iterator 是 ES6 引入的一种新的遍历机制,迭代器有两个核心概念:

  • 迭代器是一个统一的接口,它的作用是使各种数据结构可被便捷的访问,它是通过一个键为Symbol.iterator 的方法来实现。
  • 迭代器是用于遍历数据结构元素的指针(如数据库中的游标)。

迭代过程

  1. 通过 Symbol.iterator 创建一个迭代器,指向当前数据结构的起始位置
  2. 随后通过 next 方法进行向下迭代指向下一个位置, next 方法会返回当前位置的对象,对象包含了 valuedone两个属性, value 是当前属性的值, done 用于判断是否遍历结束
  3. 当 done 为 true 时则遍历结束

例子展示

      const items=[1,3,4,6,8,9];      
      const ss=items[Symbol.iterator]();      
      let a1=ss.next();      
      console.log(a1);

在这里插入图片描述

可迭代的数据结构

Array、String、Map、Set

for ...of循环

【1】Array

      const items=[1,3,4,6,8,9];      
      for(let item of items){          
      console.log(item);      
      }

【2】String

      const items="stringforsomething"      
      for(let item of items){          
      console.log(item);      
      }

【3】Map
遍历key和value

let maps=new Map(); 
maps.set(0,"hello"); 
maps.set(1,"hello1"); 
maps.set(2,"hello2"); 
maps.set(3,"hello3"); 
for(let [key,value] of maps){     
	console.log(key+"="+value); 
}
let maps=new Map(); 
maps.set(0,"hello"); 
maps.set(1,"hello1"); 
maps.set(2,"hello2"); 
maps.set(3,"hello3"); 
for(let [key,value] of maps.entries()){     
	console.log(key+"="+value); 
}

只遍历key

 let maps=new Map();
  maps.set(0,"hello"); 
  maps.set(1,"hello1"); 
  maps.set(2,"hello2"); 
  maps.set(3,"hello3"); 
  for(let key of maps.keys()){     
  	console.log(key); 
  }

只遍历value

 let maps=new Map();
  maps.set(0,"hello");
   maps.set(1,"hello1");
    maps.set(2,"hello2"); 
    maps.set(3,"hello3"); 
    for(let value of maps.values()){     
  	  console.log(value); 
    }

【4】Set
遍历整个set

let sets=new Set();
sets.add(12);
sets.add('hello');
sets.add('hello2');
sets.add('hello3');
sets.add('hello4');
for(let item of sets){    
	console.log(item);
}

只遍历key

扫描二维码关注公众号,回复: 11575891 查看本文章
let sets=new Set();
sets.add(12);
sets.add('hello');
sets.add('hello2');
sets.add('hello3');
sets.add('hello4');
for(let key of sets.keys()){    
	console.log(key);
}

只遍历value

let sets=new Set();
sets.add(12);
sets.add('hello');
sets.add('hello2');
sets.add('hello3');
sets.add('hello4');
for(let value of sets.values()){   
 console.log(value);
 }

遍历key和value

let sets=new Set();
sets.add(12);
sets.add('hello');
sets.add('hello2');
sets.add('hello3');
sets.add('hello4');
for(let [key,value] of sets.entries()){    
	console.log(key,value);
}

在这里插入图片描述

普通对象的迭代

 const arrayLink = {length: 3, 0: "zero", 1: "one",2:"hello"}
 for(let item of Array.from(arrayLink)){    
 	console.log(item);
 }

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40119412/article/details/104951776