转自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;
}
}