Array each方法 遍历多维数组

<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			// 自己实现一个 Array each方法 遍历多维数组
			 var arr=[1,2,3,[4,[5],[6]]];
			 Array.prototype.each=function(fn){
			 	try{
			 		// 目的:遍历数组的每一项 //计数器 记录当前遍历的数组元素的位置
			 		this.i || (this.i=0);
			 		// 严谨的判断设么时候去走each核心方法
			 		//当数组的长度大于0的时候&& 传递的参数必须为函数
			 		 if(this.length>0 && fn.constructor==Function){
			 		 	// 循环数组的每一项
			 		 	while(this.i<this.length){
			 		 		//获取数组的每一项
			 		 		var e=this[this.i];
			 		 		//如果当前元素获取到了 并且当前元素是一个数组
			 		 		if(e&&e.constructor==Array){
			 		 			// 直接做递归操作
			 		 			e.each(fn);
			 		 			
			 		 			
			 		 		}else{
			 		 			//如果不是数组 (那就是一个单个元素)
			 		 			//这个目的就是为了把数组的当前元素传递给fn函数 并让函数执行
			 		 			fn .call(e,e);
			 		 		}
			 		 		this.i++ ;
			 		 	
			 		 	}
			 		 	this.i=null; //释放内存 垃圾回收机制回收变量
			 		 	
			 		 }
			 	}catch(e){
			 		//TODO handle the exception
			 	}
			 	return this;
			 }
			 arr.each(function(item){
			 	alert(item);
			 })
			 
		</script>
	</head>
	<body>
	</body>
</html>

猜你喜欢

转载自www.cnblogs.com/hurriediy/p/9354059.html
今日推荐