AS3中的数组:
对于java,c#用户强调的是,as3中的数组是以非零整数的稀疏数组(sparse array),不要求所有元素的统一类型,不支持类型化数组(typed array),这点跟其他编程语言有很大的区别,可以体现出as3语言的方便性。
首先是声明方式:
1、var a:Array; // 声明一个数组变量a,但还没有告诉这个引用指向谁,trace的到null
2、var b:Array = []; // 直接声明一个空数组b,trace的到空白的显示但是不再是null了。
3、var c:Array = new Array(); // 同上面的b的声明。
4、var d:Array = [1,2,3,4]; // 使用[]操作符,建立一个整数数组。
5、var e:Array = new Array(1,2,3,4); // 使用Array类来进行和d同样的操作。
6、var f:Array = new Array(5); // 声明一个长度为5 的数组,只不过里面的元素都为空。
多维数组声明的方式:
1、var arr:Array = [[1,2,3],[4,5,6],[7,8,9,10]]; // 直接使用中括号嵌套开创建多维数组
2、var brr:Array = new Array(new Array(1,2,3),new Array(4,5,6),new Array(7,8,9,10)); / / 使用构造函数来创建多维数组
3、var crr:Array = new Array(2);
crr[0] = [1,2,3];
crr[1] = [4,5,6];
注意AS3支持不规则的多维数组,就像1中的声明一样,不规则是指不一定每个维度的子元素都是相等的数目。
对数组的操作:
(1)、查找元素:
AS3对数组元素的查找使用两个方法indexof和lastindexof,这两个方法的查找顺序不同,indexof代表从左往右(从小到大)搜索,lastindexof代表从右往左(从大到小)搜索。此外这两个方法还可以定义查找的起始位置。
indexOf(searchElement:*, fromIndex:int = 0):int
使用全等运算符 (===) 从左到右搜索数组中的项,并返回该项的索引位置(查不到会返回-1)。
var target:String = "123";
var number_ary:Array = [102,123,134];
trace(target==number_ary[1]);//此处会执行类型转制,输出为true
trace(number_ary.indexOf(target));//-1,查找不到。
package {
import flash.display.Sprite;
public class Array_lastIndexOf extends Sprite {
public function Array_lastIndexOf() {
var arr:Array = new Array(123,45,6789,123,984,323,123,32);
var index:int = arr.indexOf(123);
trace(index); // 0
var index2:int = arr.lastIndexOf(123);
trace(index2); // 6
}
}
}
(2),、在数组首位新增元素:
push方法在数组尾部新增一个或多个元素。返回值是新数组的长度。
unshift方法在数组头部新增一个或多个元素。返回值是新数组的长度。
var letters:Array = new Array();
letters.push("a");
letters.push("b");
letters.push("c");
trace(letters.toString()); // a,b,c
var names:Array = new Array();
names.push("Bill");
names.push("Jeff");
trace(names); // Bill,Jeff
names.unshift("Alfred");
names.unshift("Kyle");
trace(names); // Kyle,Alfred,Bill,Jeff
(3)、删除数组首尾的元素:
pop和shift的方法不需要参数。他们的返回值都是被删除的元素。
pop方法用于将数组最后一个元素删除。
var letters:Array = new Array("a", "b", "c");
trace(letters); // a,b,c
var letter:String = letters.pop();
trace(letters); // a,b
trace(letter); // c
shift方法用于将数组第一个元素删除,剩余元素索引值自动减一。
var letters:Array = new Array("a", "b", "c");
var firstLetter:String = letters.shift();
trace(letters); // b,c
trace(firstLetter); // a
如果需要一次删除多个元素使用splice方法。
(4)、灵活多变的splice和slice
splice方法可以删除数组当中一个或者是多个连续的元素。参数的索引值是相对于数组尾部来说的,你可以使用一个负整数来指定相对于数组结尾的位置(例如 -1是数组的最后一个元素了),返回值是一个从原始数组中删除的数组。
1、数组.splice(索引):删除索引位置后所有元素
2、数组.splice(索引,数目):删除索引位置后指定数目的元素
3、数组.splice(删除点的索引,要删除的元素数目,新元素1,新元素2,…新元素n):删除索引处指定数目元素后,插入指定新元素。
var vegetables:Array = new Array("spinach",
"green pepper",
"cilantro",
"onion",
"avocado");
var spliced:Array = vegetables.splice(2,2);
trace(vegetables);// spinach,green pepper,avocado
trace(spliced);// cilantro,onion
vegetables.splice(1, 0, spliced);
trace(vegetables);// spinach,cilantro,onion,green pepper,avocado
4、数组.splice(索引,0,新元素1,新元素2,…新元素n):不删除,相当于在索引位置后插入指定新元素。
5、splice的返回值是包含删除元素的数组。
6、splice改变了原数组内容,slice则不会,slice会返回一个包括起点不包括终点的新数组。
7、slice要求起点索引和终点索引作为参数,无终点索引意味着截取到数组末尾,参数全无意味着浅复制整个数组。
(5)、将多个元素或数组拼合成一个新的数组:拼合成concat
1、concat返回一个拼接到末尾的新数组,不改变原有数组。参数全无意味着浅复制整个数组。
2、当参数是数组而不是普通元素时,concat会将数组分成元素后按顺序加到末尾,push则不分,直接加入。
var aa:Array = new Array(1, 2, 3);
var bb:Array = new Array("a", "b", "c");
var aaAndbb:Array = aa.concat(bb);
var bbAndaa:Array = bb.concat(aa);
trace(aa); // 1,2,3
trace(bb); // a,b,c
trace(aaAndbb); // 1,2,3,a,b,c
trace(bbAndaa); // a,b,c,1,2,3
JS中的数组:
首先是声明方式:
js中的数组有四种定义的方式
使用构造函数:
var a = new Array();
var b = new Array(8);
var c = new Array("first", "second", "third");
或者数组直接量:
var d = ["first", "second", "third"];