由於陣列的資料較為龐大
所以指定資料給變數 會以參造的方式來呈現
如果你想複製一個新的陣列 則不能直接用"="來指定
例如
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
推
08/03 21:52, , 1F
08/03 21:52, 1F
→
08/03 21:52, , 2F
08/03 21:52, 2F
推
08/06 04:54, , 3F
08/06 04:54, 3F
推
08/06 04:57, , 4F
08/06 04:57, 4F
→
08/06 04:58, , 5F
08/06 04:58, 5F
推
08/06 12:55, , 6F
08/06 12:55, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):