zoukankan      html  css  js  c++  java
  • 第四章 --- 关于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);
    
  • 相关阅读:
    11 数据的增删改
    10 外键的变种 三种关系
    09 完整性约束
    03 body标签中的相关标签
    02 body标签中的相关标签
    01 HTML介绍和head标签
    08 数据类型(2)
    07 数据类型
    06 表的操作
    偶遇RecyclerView内部Bug
  • 原文地址:https://www.cnblogs.com/erbingbing/p/5625421.html
Copyright © 2011-2022 走看看