array类的扩展

      Flash 2005-4-26 9:30
转自wersling的BLOG,觉的以后应该能用到,做个记号:)
http://www.wersling.com/blog/more.asp?name=wersling&id=91

/* 
* @class com.wersling.types.CArray 
* @author Wersling 
* @version 1.0 
* @description 扩展Array类 
* @usage <pre>com.wersling.types.CArray.getMin(_Arr);</pre> 
* ----------------------------------------------- 
* Latest update: 2005-4-20 
* ----------------------------------------------- 
* 
* ----------------------------------------------- 
* Functions: 
* 1. getMin(_Arr) 
* 3. getMax(_Arr) 
* 4. map(_Arr,fun) 
* 5. filter(_Arr,fun) 
* 6. shuffle(_Arr) 
* 7. pairSums(_Arr,n) 
* 8. delRepeat(_Arr) 
* 9. delAssign(_Arr : Array, s) 
* 10. delFront(_Arr : Array, s) 
* 11. delAfter(_Arr : Array, s) 
* -------------------------------------------------- 
*/ 
class com.wersling.types.CArray 
{ 
//最小值 
public static function getMin (_Arr : Array) 
{ 
var min : Number = _Arr [0]; 
var j : Number; 
for (j in _Arr) if (_Arr [j] < min) min = _Arr [j]; 
return min; 
} 
//最大值 
public static function getMax (_Arr : Array) 
{ 
var max : Number = _Arr [0]; 
var j : Number; 
for (var i in _Arr) if (_Arr [i] > max) max = _Arr [i]; 
return max; 
} 
//数据处理 
public static function map (_Arr : Array, fun : Function) : Array 
{ 
var result : Array = new Array (); 
for (var i in _Arr) result.push (fun (_Arr [i])); 
return result; 
} 
//过滤 
public static function filter (_Arr : Array, fun : Function) : Array 
{ 
var result : Array = new Array (); 
for (var i in _Arr) 
{ 
if (fun (_Arr [i])) 
{ 
result.push (_Arr [i]); 
}; 
} 
return result; 
} 
//洗牌 
public static function shuffle (_Arr : Array) : Array 
{ 
var len : Number = _Arr.length; 
var j : Number; 
for (j = 0; j < len; j ++) 
{ 
var rand : Number = Math.floor (Math.random () * len); 
var temp : Number = _Arr [j]; 
_Arr [j] = _Arr [rand]; 
_Arr [rand] = temp; 
} 
return _Arr; 
} 
//查找满足两数据和为n 
public static function pairSums (_Arr : Array, n : Number) : Array 
{ 
var l : Array = _Arr.slice (); 
var k : Array = new Array (); 
var o1 : Number; 
var o2 : Number; 
while ((o1 = l.length - 1) > 0) 
{ 
for (o2 = o1; o2 -- > 0; "") 
{ 
if (l [o1] + l [o2] == n) k.push ([l [o1] , l [o2]]); 
} 
l.pop (); 
} 
return k; 
} 
//查重 
public static function delRepeat (_Arr : Array) : Array 
{ 
var k : Array = new Array (); 
for (var i in _Arr) 
{ 
var y = false; 
for (var j in k) 
{ 
if (_Arr [i] == k [j]) 
{ 
y = true; 
} 
} 
if ( ! y) 
{ 
k.push (_Arr [i]) 
} 
} 
return k; 
} 
//删除指定的数据 
public static function delAssign (_Arr : Array, s) : Array 
{ 
for (var i in _Arr) 
{ 
if (_Arr [i] == s) 
{ 
_Arr.splice (i, 1); 
} 
} 
return _Arr; 
} 
//删除某数据之前的数据的数据 
public static function delFront (_Arr : Array, s) : Array 
{ 
for (var i = 0 ; i < _Arr.length - 1; i ++) 
{ 
if (_Arr [i] == s) 
{ 
var _A = _Arr.slice (i + 1, - 1); 
return _A; 
} 
} 
return _Arr; 
} 
//删除某数据之后的数据的数据 
public static function delAfter (_Arr : Array, s) : Array 
{ 
for (var i = 0 ; i < _Arr.length - 1; i ++) 
{ 
if (_Arr [i] == s) 
{ 
var _A = _Arr.slice (0, i + 1); 
return _A; 
} 
} 
return _Arr; 
} 
}
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}