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);
    
  • 相关阅读:
    mysql一个字段多个值如何分别取出这些值
    mysql json数组取值、查询
    mui删除元素
    软件测试的艺术(读书笔记1)
    爬虫(3)_网站分析
    谈谈作为测试的8年
    测试有前景吗?
    爬虫(二)-创建项目&应用
    爬虫(一)-环境搭建
    puppeteer UI自动化测试demo(一)
  • 原文地址:https://www.cnblogs.com/erbingbing/p/5625421.html
Copyright © 2011-2022 走看看