合并多个数组

合并多个数组,可合并一维数组和二维数组,哈哈.比较简单,自己先存着,以免以后用来
如:
[b][color=darkred]var a1:Array=[1,2,3,4]
var a2:Array=[432,4,5,7]
var a3:Array=[36]
var aa:Array=[a1,a2,a3]


var m:mergeArray=new mergeArray;

//var a:Array=m.Merge(aa);//-----------1
var a:Array=m.Merge(a1,a2,a3)//--------2

trace(a + " = " + a.length);
//1,2都输入1,2,3,4,432,4,5,7,36 = 9[/color][/b]

package
{

/**
* ...合并多个数组,可合并一维数组和二维数组
* @author zkl
*/
public class mergeArray
{
private var i:int;

private var j:int;

public function Merge(...args):Array
{
var _newArray:Array = new Array;

var len:int = args.length;

if (len == 1) {

//二维数组
if (args[0] is Array) {

for (i = 0; i < args[0].length; i++ ) {
//合并一维数组
_newArray = mergeing(args[0]);

}
}

}else {

_newArray = mergeing(args);

}

return _newArray;

}

/**
* 合并一维数组
*/
private function mergeing(a1:Array):Array
{
var a:Array = new Array;

for (i = 0; i < a1.length; i++ ) {

if (a1[i] is Array) {

for (j = 0; j < a1[i].length; j++ ) {

a.push(a1[i][j]);

}

}
}

return a;
}

}

}


升级版-------------------------------------------不知还有没有更好的办法?
package {

/**
* ...合并多个数组,可合并一维数组和二维数组
* @author zkl
* 2010-8-30 14:27
*/
public class mergeArrayOk {
public function Merge(... args):Array {
return merge1(args);
}

private function merge1(arr:Array):Array {
var i:int, j:int;
var _tempArray:Array = new Array;
//为了不让每次循环都计算数组长度
var len:int = arr.length;
for (i = 0; i < len; i++){
if (arr[i] is Array){
var len2:int = arr[i].length;
for (j = 0; j < len2; j++){
if (arr[i][j] != null){
_tempArray.push(arr[i][j]);
}
}
} else if (arr[i] != null){
_tempArray.push(arr[i]);
}
}
//查询_tempArray是否还有数组,有则再次转换
var m:int;
var len3:int = _tempArray.length;
for (i = 0; i < len3; i++){
if (_tempArray[i] is Array){
return merge1(_tempArray);
break;
} else {
m++;
if (m == _tempArray.length){
return _tempArray;
}
}
}
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值