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

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

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章