在Flash中如何使用数组
数组是Action
Script中最简单最有用的对象之一,许多要使用变量、String对象、for或while循环的任务,如果使用数组来处理就会有效得多。下面我来介绍一下有关数组的使用方法。
一、 如何创建数组
1、创建一个无参数的数组
var
asz:Arrat=new Array()
这样就创建了一个名为asz的无元素数量和元素值的空数组。
2、创建一个指定元素数量的数组
var
asz:Array=new Array(5)
这样就创建了一个有5个数组元素的数组(由于数组的第一个索引值为0,所以该数组的最后一个索引值为4)
3、利用参数列表创建数组
var
asz:Array=new
Array(“张三”,”李四”,”王五”,”赵六”)
这样就创建了一个含有4个元素的数组,并且这些元素的值分别为:
张三、李四、王五、赵六。
以上方法是用构造函数创建数组,除了这种方法以外,还可以利用“数组文本”来创建数组。使用“数组文本”符号创建数组显得略微简单些,有了“数组文本”符号,变可以通过方括号来告诉Flash创建一个新数组。在方括号中,可以提供添加到数组中的元素列表。例如:
var
asz :Array=[“张三”.”李四”.”王五”,”赵六”]
二、 给数组添加值
1、用数组访问符号进行赋值
如果知道数组元素的索引,就可以用数组访问符号给这个元素赋值。例如:
var asz:Array=new Array(4)
asz[0]=”张三”
asz[1]=”李四”
asz[2]=”王五”
asz[3]=”赵六”
2、在数组的末尾追加元素
当动态地向一个数组添加元素时,常常难以跟踪元素的个数,Action Script提供了一个简单而有效的方法,即通过push()方法将元素追加到数组中去。
例如:
var
asz:Array=[“张三”.”李四”.”王五”,”赵六”]
asz.push(“马七”)
trace(asz.toString())
在输出面板上将显示:张三,李四,王五,赵六,马七
再如:
var
asz:Array=[“张三”.”李四”.”王五”,”赵六”]
asz.push(“语文”,”数学”,”物理”)
trace(asz.toString())
在输出面板上将显示:张三,李四,王五,赵六,语文,数学,物理
值得注意的是,push()方法总是追加新的元素,即使当前存的元素都具有undefined值。比如:
var
asz:Array=new Array(2)
asz.push(“语文”,”数学”,”物理”)
trace(asz.toString())
在输出面板上将显示:undefined,undefined,语文,数学,物理
可以看到,前两个元素仍然保持undefined值。
3、在数组的开始处添加元素
unshift()方法与push()方法大体相同,只不过unshift()方法是将新元素添加到数组的开始处而不是末尾处。所有当前存在的元素都被移动到较大的索引。如果用该方法将一个新元素添加到一个数组中时,该新元素的索引为0,并且将当前存在的所有元素的索引都增加1。
4、在数组中插入元素
前面已经介绍了如何在数组的开始处添加元素以及如何在数组的末尾处添加元素了,如何在数组的中间插入元素呢,Action
Script为我们提供了Splice()方法。其实,Splice()方法不仅可以从数组中间插入元素,也可以从数组中间删除元素。具体使用方法是:Splice()方法的第一个参数是开始处的索引值,例如,如果想从第二个元素处开始插入新元素,那个第一个参数的值是1;第二个参数是要连续删除的元素的数量,如果不想删除元素,这个参数的值为0。否则就将该参数指定要删除的元素的数量。然后,Splice()方法的其余参数是指出想插入到数组中的元素的值。下面是一个在数组asz1中第二个元素后面插入两个新元素的例子(这时,第一个参数应该为1,第二个参数应该为0,其余参数是两个新元素的值)。程序代码如下:
var asz1:Array=[“语文”,”数学”,”物理”,”化学”]
asz1.splice(1,0,"政治"."外语")
for (i=0;i<asz1.length;i++){
trace(asz1[i])
}
程序运行后,输出面板上显示的内容是:
语文
政治
外语
数学
物理
化学
三、 从数组中删除元素
1、删除数组的最后一个元素
可以使用pop()方法从数组中删除最后一个元素。因为pop()方法总是删除最后一个元素,所以它不需要任所参数,该方法返回被删除的值,以便用它做某些事情,而不仅仅是将其从数组中删除而已。
例如:
var asz1:Array=[“语文”,”数学”,”物理”,”化学”]
var tcs:String=String(asz1.pop())
trace(asz1.toString())
trace(tcs)
运行该程序后,输入面板上显示内容如下:
语文,数学,物理
化学
2、删除数组的第一个元素
像pop()方法一样,shift()方法从数组中删除并返回一个元素,但shift()方法从数组的开始处删除元素,而不是数组的末尾处删除元素。所以后续元素都被移动,即它们的索引值都减1。例如:
var asz1:Array=[“语文”,”数学”,”物理”,”化学”]
var tcs:String=String(asz1.shift())
trace(asz1.toString())
trace(tcs)
运行该程序后,输入面板上显示内容如下:
数学,物理,化学
语文
3、删除数组中间的元素
前面已经介绍了如何从数组的开始处和末尾处删除元素了,那么如何删除既不在开始处也不在末尾处的元素呢?可能使用splice()方法来达到这个目的。它有两个参数,第一个参数是需要删除的起始元素的索引值,第二个参数是需要连续删除的元素个数。例如:
var asz1:Array=[“语文”,”数学”,”物理”,”化学”]
var asz2:Array=asz1.splice(1,2)
trace(asz1.toString())
trace(asz2.toString())
//以上程序是的第二条语句是指从数组asz1的索引值为1的元素开始,连续删除两个元素。
运行该程序后,输入面板上显示内容如下:
语文,化学
数学,物理
四、从数组中读数据
可以利用数组访问符号一次访问一个元素地从数组中读数据。例如:
var asz1:Array=[“语文”,”数学”,”物理”,”化学”]
trace(asz1[0])
trace(asz1[1])
trace(asz1[2])
trace(asz1[3])
运行程序后,输出面板上显示内容如下:
语文
数学
物理
化学
也可以使用循环语句和数组特有的length()属性读取数据。例如:
var asz1:Array=[“语文”,”数学”,”物理”,”化学”]
for
(i=0;i<asz1.length;i++){
trace(asz1[i])
}
运行程序后,输入面板上显示的内容是:
语文
数学
物理
化学
五、使用二维数组
可以将标准的一维数组认为是数据的一个单独的列,二维数组可以认为是一个网格,其中的每一个元素都由两个索引来决定,即一个行索引和一个列索引。例如:
var
asz1:Array = new Array();
asz1.push(["张三", "99"]);
asz1.push(["李四", "100"]);
asz1.push(["王五", "89"]);
asz1.push(["赵六", "88"]);
asz1.push(["马七", "94"]);
for (i=0;
i<asz1.length; i++) {
trace("姓名:"+asz1[i][0]+"分数:"+asz1[i][1]);
}
程序运行后,输入面板上显示内容如下:
姓名:张三分数:99
姓名:李四分数:100
姓名:王五分数:89
姓名:赵六分数:88
姓名:马七分数:94
六、数组的简单排序
在Action
Script的数组上可以执行的最基本排序是按字母顺序排序。为了实现按字母顺序排序,只需要简单的调用数组的sort()方法。这是一个用的比较多的排序方法。例如:
var asz1:Array=[“语文”,”数学”,”物理”,”化学”]
asz1.sort()
for
(i=0;i<asz1.length;i++)
trace(asz1[i])
程序运行后,输入面板上显示的内容是:
化学
数学
物理
语文
当然,在Action
Script的数组上还可以进行较为复杂的排序,如按数字进行排序,按降序进行排序,不区分大小写进行排序,用多个标志进行排序,用自定义算法进行排序等,这里就一一赘述。
加载中,请稍候......