Re: [問題] 請問關於陣列的合併

看板Flash作者時間17年前 (2007/08/03 21:47), 編輯推噓4(402)
留言6則, 3人參與, 最新討論串3/3 (看更多)
由於陣列的資料較為龐大 所以指定資料給變數 會以參造的方式來呈現 如果你想複製一個新的陣列 則不能直接用"="來指定 例如 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
聽君一席話 茅塞頓開! 自從發現不能array=array
08/03 21:52, 1F

08/03 21:52, , 2F
就用三行的那個方法 可是卻不曉得為什麼會這樣....
08/03 21:52, 2F

08/06 04:54, , 3F
原理跟Object一樣 是用"參照"的 就像你指定一個物件 你可以
08/06 04:54, 3F

08/06 04:57, , 4F
用var obj:Object=_root.aaa_mc.bbb_mc.ccc_mc 來縮短這麼長
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
文章代碼(AID): #16ip7Y5T (Flash)
文章代碼(AID): #16ip7Y5T (Flash)