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"];