ActionScript Array
由于最近项目需要,做一个代理ActiveX的东东,兼容在火狐浏览器。所以最近把学习ActionScript记录下来。
我从全局函数学起,如果有Javascript编程语音基础,学习ActionScript就容易些。
Array全局函数
定义数组:
1.利用Array构造函数定义数组。
语法:var variable:Array = new Array(numElements:int = 0)
声明变量在ActionScript中用var,和JavaScript里一致,在ActionScript中声明变量的语法:var variable:数据类型
这点有点像delphi语法,例如:var str:string;但是和C#里不一样,string str;
在回到数组中,构造函数中有一个参数,带有默认值为0(ActionScript不支持方法重在,但Array的构造函数有两个版本)
假如我定义如下数组
var arr:Array = new Array() //定义了一个长度为0的数组arr
var arr:Array = new Array(10) //定义了一个长度为10的数组arr,并且初始化为undefined
可以测试我们代码:
for(var i:int=0;i<arr.length;i++)
{
trace(arr[i]+"\n"); //输出undefined;
}
定义一个指定长度的数组,并且赋值
var arr:Array = new Array(3);
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
可以利用循环赋值
for(var i:int=0;i<arr.length;i++)
{
arr[i] = i;
}
可以看出访问数组和JavaScript一样,用variable[index]即可
var:arr:Array = new Array(1,2,"hello",true); 这个就是Array的构造函数的另一个版本,可以直接初始化数组。
2.直接量直接定义初始化数组
var arr:Array = [];
var arr:Array = [1,2,3,4,"hello",true];
定义了arr可以通过typeof来查看变量的类型,typeof(arr)//输出object,可以看出Array全局函数继承自object,应该我们以后学习的全局函数都继承自object
Array数组的length属性是一个读写属性,在ActionScript里这样实现:
public function get length:uint; //read
public function set length(value:uint):void; //write
所以ActionScript中length可以动态变量数组的长度,注意改变的时候如果length的长度大于数组本身,增加数组元素,并且初始化为undefined;如果length的
长度小于数组本身,则截断数组。
var arr:Array = new Array();
arr.length = 8;
arr.length = 5;
知道了数组的长度可以通过length来改变,下面应该学习Array里的方法了。
首先看看push(),pop(),unshift(),shift(),其实就用数组显示了计算机科学中的栈(Stack)和队列(Queue)
1.push()和pop()
栈是计算机中一种限定只能操作队尾操作的线性表,遵循先进后出的原则。
push()进栈
var arr:Array = new Array(); //length 0
arr.push("hello"); //length 1
arr.push(true); //length 2
var arrLen:uint = arr.push(1); //length 3; arrLen 3
pop()退栈
arr.pop(); //length = length -1 2
var val:Boolean=arr.pop(); //1 val=true
push(...argument)可以是ActionScript允许的任何类型,Boolean,String,Number,Object,Array
所以可以利用push构造二维数组,
var arr:Array = new Array();
var arr1:Array = new Array(0,1,2);
var arr2:Array = new Array(3,4,5);
var arr3:Array = new Array(6,7,8);
arr.push(arr1);
arr.push(arr2);
arr.push(arr3);
for(var i:int=0;i<arr.length;i++)
{
for(var j:int=0;j<arr[i].length;j++)
{
trace(arr[i][j]+"\n"); //输出0,1,2,3,4,5,6,7,8
}
}
2.unshift()和shift()
队列是计算机科学中一种限定只能操作队首的线性表。遵循先进先出的原则。
var arr:Array = new Array();
arr.unshift("hello"); //length 1
arr.unshift(1); //length 2
var len:uint = arr.unshift(true); //length 3 len=3
arr.shift(); //length 2
var val:int = arr.shift(); //length 1 val = 1
其他的方法:
1.toLocaleString();返回数组元素的字符串
var arr:Array = new Array(1,2,true,"hello");
trace(arr.toLocaleString()); //输出 1,2,[object Boolean],[object String]
2.indexOf,lastIndexOf;
查找在数组中的元素,返回该元素的位置,lastIndexOf从尾部开始查找
3.join(sep:*)
将数组中的元素转换成字符串,用分隔符相连。
var arr:Array = new Array(1,2,true,"hello");
var s:String = arr.join(",");
trace(s); //输出1,2,true,hello
4.splice(startIndex:int, deleteCount:uint,...values):Array
给数组添加元素或删除数组元素,返回数组
var arr:Array = new Array(1,2,true,"hello");
arr = arr.splice(0,2);
trace(arr.join(",")); //输出1,2
5.Sort()和OnSort()方法
数组排序
其他的方法在以后的应用中介绍。
浙公网安备 33010602011771号