宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > AS2与AS3技术

[AS3]AS3下对数组操作复制

2016-10-13 00:16:48 点击量:4 标签: 收藏本文

[AS3]AS3下对数组操作复制

  1. import flash.utils.ByteArray; 
  2. var a:Array=["a","b"]; 
  3. var b:Array=[]; 
  4. b=clone(a); 
  5. trace(b); 
  6.  
  7. function clone(source:Object):* 
  8. var myBA:ByteArray = new ByteArray(); 
  9. myBA.writeObject(source); 
  10. myBA.position = 0
  11. return(myBA.readObject()); 

 

如果数组中的元素全部是基元数据类型,复制没有浅复制和深复制的分别。

当数组中元素是复杂数据类型,即引用类型时,那么复制就分为浅复制和深复制。

 

 

浅复制

arr.slice();

arr.concat();

//使用浅复制生成的数组,其个元素存放的只是引用。

//两个数组中相同位置的元素存放的引用指向同一个对象。

//那么,该对元素的操作,等于就是操作引用指向的对象。

//如果该对象的状态发生变化,那么也会影响到另一个数组中相应位置的元素

var arr:Array = [1,5,3,9,[5,1]];

var copy:Array = arr.slice();

trace(copy);//1,5,3,9,5,1

copy[4][0] = 9

trace(arr)//1,5,3,9,9,1

trace(copy)//1,5,3,9,9,1

=====================

var arr:Array = [1,5,3,9];

var copy:Array = arr.slice();

trace(copy);//1,5,3,9

copy[3] = 5

trace(arr)//1,5,3,9

trace(copy)//1,5,3,5


深复制 ByteArray

深复制生成的新数组,其所有元素都是真正的原数组元素的备份。

这时两个数组中相同位置的元素,存放着不同的引用,指向不同的对象。

深复制用到ByteArray类

var _arr:Array = [1,2,3,[4,5]];

var copy:Array;

var bty:ByteArray=new ByteArray();

bty.writeObject(_arr);

bty.position=0;

copy=bty.readObject();

trace(copy);//1,2,3,4,5

copy[3][1] = 6;

trace(copy);//1,2,3,4,6

trace(_arr)//1,2,3,4,5

ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室