es6的Iterator(迭代器)
迭代器允许每次访问数据集合的一个元素,当指针指向数据集合最后一个元素是,迭代器便会退出。它提供了 next() 函数来遍历一个序列,这个方法返回一个包含 done 和 value 属性的对象。
var arr = [1,2,3,4,5,6];
for(var i = 0;i<arr.length;i++){
console.log(arr[i]);
}
//迭代器 提升 访问具有接口数据的效率
//迭代器 他用来访问具有遍历接口数据的,它有一个next(理解指针-1)方法
//next 将当前指针移到下一个位置,返回一个对象{value:,done:}
//使用迭代器
//可遍历接口
var iter = arr[Symbol.iterator]();
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
//哪些数据有 遍历接口
//数组 Map Set 类数组
var obj = {};
console.log(obj);//没有接口
var s = new Set([1,2,3]);
console.log(s);//有接口
let itera = s[Symbol.iterator]();
console.log(itera.next());
var m = new Map([["age,23"],["sex","女"]]);
m.set("name","姜姜");
console.log(m);
var i = m[Symbol.iterator]();
console.log(i.next());
console.log(i.next());
console.log(i.next());
let tags =document.getElementsByName("div");
console.log(tags);
自定义的迭代器
var arr = [1,2,3,4,5,6];
function Iterator(arr){
let i = -1;
function next(){
i++;
let value;
let done = false;
if(i == arr.length) {
value = undefined;
done = true;
}else{
value = arr[i];
}
return {valye:arr[i],done:done};
}
return {next:next};
}
let iter =Iterator(arr);
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());