AS3中的数组与js中数组的区别

来源:互联网 发布:淘宝延长收货怎么操作 编辑:程序博客网 时间:2024/05/21 12:49

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,Jeffnames.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,cvar letter:String = letters.pop();trace(letters); // a,btrace(letter);     // cshift方法用于将数组第一个元素删除,剩余元素索引值自动减一。var letters:Array = new Array("a", "b", "c");var firstLetter:String = letters.shift();trace(letters);     // b,ctrace(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,avocadotrace(spliced);// cilantro,onionvegetables.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"]; 



0 0