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