作者afu70 ()
看板Flash
标题Re: [问题] 请问关於阵列的合并
时间Fri Aug 3 21:40:42 2007
由於阵列的资料较为庞大
所以指定资料给变数 会以参造的方式来呈现
如果你想复制一个新的阵列 则不能直接用"="来指定
例如
var a_ary:Array=[1,2,3]
var b_ary:Array=a_ary
b_ary.push(4)
trace(b_ary)
trace(a_ary)
会发现两者都一样
这是因为b_ary只是参造到a_ary的位址而已
不算是一个新的阵列
这时候可以用两种作法来复制
一种是用回圈+推:
var a_ary:Array=[1,2,3]
var b_ary:Array=new Array()
for(i=0;i< a_ary.length;i++){
b_ary.push(a_ary[i])
}
但是这样比较麻烦点 要写3行
另一种作法是用投机取巧的 用黏的(concat)或用切的(slice):
1行就可以复制新的阵列了
var a_ary:Array=[1,2,3]
var b_ary:Array=a_ary.concat()
或
var b_ary:Array=a_ary.slice()
此时
b_ary.push(4)
trace(b_ary)
trace(a_ary)
会发现会有不一样的结果
会分享这个方法是因为......
我用前面的笨方法用了一两年了
最近才发现这个新方法 介绍给大家
※ 引述《aquarianboy (我是没牌的营养师!)》之铭言:
: ※ 引述《Angelliya (澪澪)》之铭言:
: : 问题是
: : 假设有两个阵列A_array及b_array
: : 想让阵列C_array有阵列A及B的内容时...要怎麽连接呢
: : var a_array:Array = new Array();
: : my_array[0] = "1111";
: : my_array[1] = "2222";
: : //
: : var b_array:Array = new Array();
: : my_array[0] = "aaaa";
: : my_array[1] = "bbbb";
: : //
: : 想让阵列c的结果是"1111","2222","aaaa","bbbb"
: : 请问该怎麽做连接呢?
: var a_array:Array = new Array();
: a_array[0] = "1111";
: a_array[1] = "2222";
: var b_array:Array = new Array();
: b_array[0] = "aaaa";
: b_array[1] = "bbbb";
: var c_array1:Array = new Array();
: var c_array2:Array = new Array();
: //用push
: c_array1.push(a_array);
: c_array1.push(b_array);
: //用concat
: c_array2 = a_array.concat(b_array);
: trace(c_array1);
: trace(c_array2);
: 用推的或用黏的都可以 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.10.81
1F:推 jonathanmeow:听君一席话 茅塞顿开! 自从发现不能array=array 08/03 21:52
2F:→ jonathanmeow:就用三行的那个方法 可是却不晓得为什麽会这样.... 08/03 21:52
3F:推 afu70:原理跟Object一样 是用"参照"的 就像你指定一个物件 你可以 08/06 04:54
4F:推 afu70:用var obj:Object=_root.aaa_mc.bbb_mc.ccc_mc 来缩短这麽长 08/06 04:57
5F:→ afu70:的物件绝对路径 但是并不是复制一个新的物件出来 只是"参照" 08/06 04:58
6F:推 Angelliya:好文推 ^^" 08/06 12:55