admin管理员组

文章数量:1530842

2024年5月12日发(作者:)

ActionScript编程 创建数组副本

作用:

创建一个与指定数组完全相同的新数组,而且该数组并非只是指向原有数组的引用。

说明:

使用Array类的concact()方法和slice()方法可以查询数组中的信息,并返回一个新数

组。

concat()方法的作用是将参数中指定的元素与数组中的元素连接,并返回新的数组。如

果这些参数指定了一个数组,则将连接该数组中的元素。concat()使用方法如下所示。

var newArray:Array = (... args);

...args参数表示要连接到新数组中的任意数据类型的值(如数字、元素或字符串)。如

果未传递任何值,则新数组将是原始数组的副本。执行该程序后将返回一个新的数组,其

中包含此数组中的元素,后跟参数中的元素。

slice()方法可以返回由原有数组中某一范围的元素构成的新数组,而不修改原有数组。

返回的数组包括startIndex元素以及从其开始到endIndex元素(但不包括该元素)的所有

元素。slice()使用方法如下所示。

var newArray:Array = (startIndex,endIndex);

slice()方法具有两个名为startIndex和endIndex的参数,介绍如下所示。

startIndex 一个数字,指定片段起始点的索引。如果startIndex是负数,则起始点从数组的结

尾开始,其中-1指的是最后一个元素。

endIndex 一个数字,指定片段终点的索引。如果省略此参数,则片段包括数组中从开头到结

尾的所有元素。如果endIndex是负数,则终点从数组的结尾指定,其中-1指的是最后一个元

素。

如果没有传递任何参数,则创建原有数组的一个副本。另外需要注意的是,endIndex

处的元素不包括在返回值中。

示例:

如果想要对数组的副本进行操作,而非原有内容,可以使用concat()复制数据的副本,

而和原有数组完全无关。例如,myArray数组中包含有3个元素(a,b,c),然后复制该

数组为newArray新数组。当改变newArray数组中的元素时,myArray数组中的元素保持

不变,如下所示。

var myArray:Array = new Array("sun","moon","star");

var newArray:Array = ();

trace(myArray);

//输出sun,moon,star

trace(newArray);

//输出sun,moon,star

newArray = ["wind","rain","snow"]

trace(myArray);

//输出sun,moon,star

trace(newArray);

//输出wind,rain,snow

从上面的示例可以看出,复制的数组独立副本与原有数组无关联。修改其中任意一个

数组,均不会影响到另外一个数组。

上面的示例是复制一个与原有数组完全的新数组,但在实际操作中往往只需要使用原

有数组中的部分元素,这样就需要使用slice()方法。例如,myArray数组中包含有5个元

素(a,b,c,d,e),使用slice()方法获取该数组中索引位置1至3的元素,并创建一个

新的数组,如下所示。

var myArray:Array = new Array("a", "b", "c", "d", "e");

var newArray:Array = (1,4);

//获取索引1至4的元素,返回值不包含索引4中的元素

trace(myArray);

//输出a,b,c,d,e

trace(newArray);

//输出b,c,d

在上例中如果对slice()方法只传递第一个参数startIndex,则会从索引1位置开始向后

获取所有元素,直至最后一个元素,这样的返回值中将包含有最后一个元素,如下所示。

var myArray:Array = new Array("a", "b", "c", "d", "e");

var newArray:Array = (1);

//获取索引1位置以后的所有元素

trace(myArray);

//输出a,b,c,d,e

trace(newArray);

//输出b,c,d,e

上面的两个示例都是以正向的序列,传递范围的起始索引位置和结束索引位置。其实,

如果对slice()方法中传递负数参数,则可以以倒数的某个索引为起始位置向后获取,这样

对包含有较多元素的数组来说非常方便。例如在上例中的slice()方法中传递一个-2参数,

可以直接获取数组中的最后2个元素,如下所示。

var myArray:Array = new Array("a", "b", "c", "d", "e");

var newArray:Array = (-2);

//获取索引1位置以后的所有元素

trace(myArray);

//输出a,b,c,d,e

trace(newArray);

//输出d,e

本文标签: 数组元素副本原有