AS3中的數組與js中數組的區別

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章