Flash / Flex 编程语言 ActionScript 中数组的赋值

本文通过实例演示了ActionScript中数组直接赋值与深拷贝的区别,展示了数组引用赋值导致的问题及如何避免。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

定义数组aa=12345

定义数组bb=数组aa

那么删除数组 bb 的第三个元素之后,数组aa=

在数组 bb 的第一个元素后面插入三个元素之后,数组aa=??

代码如下:

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

trace("定义数组 aa 并赋值= "+aa);

var bb:Array = aa;

trace("定义数组 bb = aa,则数组 bb = "+bb);

bb.splice(2, 1);

trace("删除数组 bb 的第三个元素之后——");

trace("数组 bb = "+bb);

trace("数组 aa = "+aa);

bb.splice(1, 0, "a", "b", "c");

trace("在数组 bb 的第一个元素后面插入三个元素之后——");

trace("数组 bb = "+bb);

trace("数组 aa = "+aa);

stop();

输出结果如下:

定义数组 aa 并赋值= 1,2,3,4,5

定义数组 bb = aa,则数组 bb = 1,2,3,4,5

删除数组 bb 的第三个元素之后——

数组 bb = 1,2,4,5

数组 aa = 1,2,4,5

在数组 bb 的第一个元素后面插入三个元素之后——

数组 bb = 1,a,b,c,2,4,5

数组 aa = 1,a,b,c,2,4,5

也就是说,数组aa的元素也发生了变化~~~~~

原因是——actionscript中数组的赋值只是把引用指向了目标数组,而没有得到目标数组的副本。

若想让数组bb不指向数组aa的存储空间,而是得到数组aa的副本,则需要遍历数组aa,把数组aa的元素值逐个赋值给数组bb的对应元素。

代码如下:

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

trace("定义数组 aa 并赋值= "+aa);

var bb:Array = [];

for(var i=0;i<aa.length;i++)

{

       bb[i] = aa[i];

}

trace("定义数组 bb 并把数组 aa 的元素逐个赋值给数组 bb,则bb = "+bb);

bb.splice(2, 1);

trace("删除数组 bb 的第三个元素之后——");

trace("数组 bb = "+bb);

trace("数组 aa = "+aa);

bb.splice(1, 0, "a", "b", "c");

trace("在数组 bb 的第一个元素后面插入三个元素之后——");

trace("数组 bb = "+bb);

trace("数组 aa = "+aa);

stop();

输出结果如下:

定义数组 aa 并赋值= 1,2,3,4,5

定义数组 bb 并把数组 aa 的元素逐个赋值给数组 bb,则bb = 1,2,3,4,5

删除数组 bb 的第三个元素之后——

数组 bb = 1,2,4,5

数组 aa = 1,2,3,4,5

在数组 bb 的第一个元素后面插入三个元素之后——

数组 bb = 1,a,b,c,2,4,5

数组 aa = 1,2,3,4,5

数组aa的元素不再发生变化了,哈哈~~~~~
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值