第四章 --- 关于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);
欢迎推荐,欢迎 star