Iterator
Iterator
是 ES6 引入的一种新的遍历机制,迭代器有两个核心概念:
- 迭代器是一个统一的接口,它的作用是使各种数据结构可被便捷的访问,它是通过一个键为
Symbol.iterator
的方法来实现。 - 迭代器是用于遍历数据结构元素的指针(如数据库中的游标)。
迭代过程
- 通过
Symbol.iterator
创建一个迭代器,指向当前数据结构的起始位置 - 随后通过
next
方法进行向下迭代指向下一个位置,next
方法会返回当前位置的对象,对象包含了value
和done
两个属性, value 是当前属性的值, done 用于判断是否遍历结束 - 当 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);
}