jasmine214--love

只有当你的内心总是充满快乐、美好的愿望和宁静时,你才能拥有强壮的体魄和明朗、快乐或者宁静的面容。
posts - 731, comments - 60, trackbacks - 0, articles - 0

JS --Hash/Array--(遍历)each方法

Posted on 2010-07-20 10:37 幻海蓝梦 阅读(4653) 评论(0)  编辑  收藏 所属分类: JS

原文:http://www.02web.com/hublog/article.asp?id=344

数组在平时越用越多,可惜它自身没有一个遍历的方法

下面这样是最简单的一个简历方法,直接设置数组对象的

JavaScript代码
  1. Array.prototype.each =  function ( callback ){  
  2. for var  i = 0 ,j =  this .length ; i < j ; i++ ){  
  3.     callback.call( this, this[i], i );  
  4.     }     
  5.  }  

上面的可以这样使用

JavaScript代码
  1. //遍历一个数组如果是它是数组,就把它乘以10再输出   
  2. var  testArray = [1,2, '我' , '不' ,3,5];  
  3. testArray.each( function( value ){  
  4.     typeof value == 'number' ? alert( value *10 ):null;  
  5. })  

改变一个数组的内容

JavaScript代码
  1. //遍历每个元素并且在它的前面加上chinese   
  2. var  testArray = [1,2, '我' , '不' ,3,5];  
  3.     testArray.each( function( value, index ){  
  4.         this[index] = 'chinese' + value;  
  5. })  
  6.   
  7. testArray.each( function( v ){  
  8.     alert(v);  
  9. })  

如果是一个多维数组呢?不停地调each就行了,下面修改each方法

JavaScript代码
  1. //首先引入一个isArray函数,这个函数非常有用,必备~   
  2. isArray = function( arrayObj ){  
  3.     return arrayObj &&  
  4.        typeof arrayObj === 'object' &&  
  5.        typeof arrayObj.length === 'number' &&  
  6.        typeof arrayObj.splice === 'function'   
  7.     }  
  8.   
  9. Array.prototype.each = function( callback){  
  10.   forvar i = 0 ,j = this.length ; i < j ; i++){   
  11.    isArray( this [i] )? this [i].each( callback ): 
           callback.call( this, this[i], i );  
  12.    }      
  13. }  

下面可以试验一下

JavaScript代码
  1. var  testArray = [1,2,[ 'sdf' , '2sdf' ],[12313,[[34,45]]]];  
  2. testArray.each(function(v){  
  3.     alert(v); //输出1,2,sdf,2sdf,12313,34,45  
  4. })  

只有注册用户登录后才能发表评论。


网站导航: