第四章 --- 关于Javascript 设计模式 之 迭代器模式

今天我先写 两个常用的迭代器的 例子。(同学们先自行体会这二种迭代器的优缺点) 需求:比较两个数组是否相等

tips: 当数组的下标不为数字的时候,默认为 该键值对 为 对象。
然后迭代器的原理基本来源于 for 循环。

eg:
var arr = ['a','b','c'];

arr.forEach(function(i,n){  
    console.log('当前值是' + i); 
    console.log('当前下标是' + n);
}) 	


今天我先写 两个常用的迭代器的 例子。(同学们先自行体会这二种迭代器的优缺点) 需求:比较两个数组是否相等.
    //内部迭代器
var compare = function(arr1,arr2){
	if(arr1.length != arr2.length){
		throw new Error('这两个数组不相等');
	}

	arr1.forEach(function(i,n){
		if(n != arr2[i]){
			throw new Error('这两个数组不相等');
		}
	});

	alert("这二个数组相等啦");
}

var arr1 = [1,2,3];
var arr2 = [2,3,4];

compare(arr1,arr2);   //?    
    //外部迭代器
var Iterator = function(obj){
	var current = 0;
	
	var next = function(){
		current += 1;
	};

	var isDone = function(){
		return current >= obj.length;
	}

	var getCurrItem = function(){
		return obj[current];
	}

	return {
		next : next,
		isDone : isDone,
		getCurrItem: getCurrItem
	}
};

var compare = function(arred1,arred2){
	while(!arred1.isDone && !arred2.isDone){
		if(arred1.getCurrItem() !== arred2.getCurrItem()){
			throw new Error('他们不相等');	
		}

		arred1.next();
		arred2.next();
	}

	alert('他们又相等啦');
}

var arred1 = Iterator([1,2,3]);
var arred2 = Iterator([1,2.3]);

compare(arred1,arred2);
posted @ 2016-06-28 23:53  SmallW  阅读(298)  评论(0编辑  收藏  举报