一些直接借用as2.0文档说明.也懒得一句一句的翻译过去,重新重零学习,写自己一些心得体会...
最新有重新学习as语言的想法,可惜网上as3.0的中文资料文档太少,只能去翻e文资料,如果不出意外, 这将是一系列的as基础学习教程...
封包: 顶级
Array
Object
|
+-Array
public dynamic class Array
extends Object
Array 类使您可以访问和处理索引数组。索引数组是一个对象,其属性由表示该属性在数组中位置的数字来标识。此数字称为索引。所有索引数组都从零开始,这意味着数组中的第一个元素为 [0],第二个元素为 [1],依此类推。若要创建一个 Array 对象,请使用构造函数 new Array()。若要访问数组中的元素,请使用数组访问运算符 ([])。
您可以在数组元素中存储各种各样的数据类型,包括数字、字符串、对象,甚至是其它数组。您可以创建一个多维 数组,方法是创建一个索引数组,然后给它的每个元素分配不同的索引数组。这样的数组被视为是多维的,原因是它可用于表示表中的数据。
数组是松散的排列,意味着可能在索引位置 0 和索引位置 5 是同一个元素(数), 但是在那二者数值之间和索引位置中是无关的。 在这种情况下,元素在索引位置 1 直到 索引位置4 也是不明确的, 哪些是缺少元素, 数值和索引位置也是不明确的.
数组分配是按引用而不是按值进行的:当您将一个数组变量分配给另一个数组变量时,这两个变量都引用同一数组:
var oneArray:Array = new Array("a", "b", "c");//初值化
var twoArray:Array = oneArray; // 转递数组.
twoArray[0] = "z"; //赋值twoArray[0].
trace(oneArray); // 输出: z,b,c.
Array 类不应该用于创建关联数组,关联数组是不同的数据结构,它们包含命名元素而不是编号元素。您应该使用 Object 类创建关联数组(也称为 哈希)。虽然 ActionScript 允许您使用 Array 类创建关联数组,但您不能使用 Array 类的任何方法或属性。关键是,关联数组是 Object 类的实例,而每个键/值对由属性及属性的值表示。要将关联数组声明为 Object 数据类型还有另一个原因:您可以使用对象文本来填充关联数组(但只能在您声明它时)。
构造函数摘要
长度 : uint
方法摘要
1. Array(numElements:int = 0)
创建一个长度为 0 或更大的新数组,或者创建由一列指定的元素(这些元素可能具有不同的数据类型)填充的数组。
使用 Array() 创建下列各项之一:
空数组
具有特定长度,但其元素未定义值的数组
其元素具有特定值的数组
使用此函数类似于使用 Array 构造函数创建数组。
您可以传递一个数字 (numElements) 或者传递包含一个或多个不同类型的一列元素 (element0, element1, ... elementN)。
能够接受一种以上数据类型的参数以 Object 类型在签名中列出。
参数:
numElements:int(默认:0) [可选] - 一个指定数组中元素数量的正整数。您可以指定 numElements,也可以指定元素列表,但不能同时指定两者。
实例一:
创建一个长度为0的空数组
package {
import flash.display.Sprite;
public class Array_Array extends Sprite {
public function Array_Array() {
var myArr:Array = new Array();
trace(myArr.length); // 0
}
}
}
实例二:
创建一个长度为5的数组,0索引为字符串"one",并添加新元素--字符串"six"[需调用数组函数push()]
package {
import flash.display.Sprite;
public class Array_Array_2 extends Sprite {
public function Array_Array_2() {
var myArr:Array = new Array(5);
trace(myArr.length); // 5
myArr[0] = "one";
myArr.push("six");
trace(myArr); // one,,,,,six
trace(myArr.length); // 6
}
}
}
2. Array(... values)
创建一列新数组,并直接赋值.
语法:public function Array(numElements:int = 0)
参数:
... values --从0索引直接赋值到更多索引
实列:
创建一个长度为3的新数组,并赋值--字符串"one","two","three"
package {
import flash.display.Sprite;
public class Array_Array_3 extends Sprite {
public function Array_Array_3() {
var myArr:Array = new Array("one", "two", "three");
trace(myArr.length); // 3
trace(myArr); // one,two,three
}
}
}
3. concat()
将参数中指定的元素与数组中的元素连接,并创建新的数组
as3.0语法: function concat(... args):Array
参数:
... args :可以是存储各种各样的数据类型,包括数字、字符串、对象,如果赋值为空,将复制原数组并创建新数组.
返回:数组
实例:
创建numbers数组,并赋值--1,2,3
创建letters数姐,并赋值--a,b,c
创建numbersAndLetters,并从Letters数组复制所有元素到numbers数组
创建lettersAndNumbers,并从numbers数组复制所有元素到Letters数组
var numbers:Array = new Array(1, 2, 3);
var letters:Array = new Array("a", "b", "c");
var numbersAndLetters:Array = numbers.concat(letters);
var lettersAndNumbers:Array = letters.concat(numbers);
trace(numbers); // 1,2,3
trace(letters); // a,b,c
trace(numbersAndLetters); // 1,2,3,a,b,c
trace(lettersAndNumbers); // a,b,c,1,2,3
4.every() 方法[as3.0新增]
检测是否数组所有元素都满足 callback 函数方法指定的条件。
as3.0语法:function every(callback:Function, thisObject:* = null):Boolean
参数:
callback:Function --检测函数
thisObject:* (default = null) --判断条件
返回:布尔值
实例:
创建数组arr1和数组arr2并调检测用函数isNumeric
isNumeric函数--检测是否全部为Number
import flash.display.Sprite;
public class Array_every extends Sprite {
public function Array_every() {
var arr1:Array = new Array(1, 2, 4);
var res1:Boolean = arr1.every(isNumeric);
trace("isNumeric:", res1); // true
var arr2:Array = new Array(1, 2, "ham");
var res2:Boolean = arr2.every(isNumeric);
trace("isNumeric:", res2); // false
}
private function isNumeric(element:*, index:int, arr:Array):Boolean {
return (element is Number);
}
}
}
4.filter 方法[as3.0新增]
as3.0语法:filter(callback:Function, thisObject:* = null):Array
根据 callback 方法指定的条件过滤数组,返回由符合条件的元素组成的新数组
参数:
callback:Function--检测函数
function callback(item:*, index:int, array:Array):void;
thisObject:* = null--判定条件
返回:数组
实例:
创建employees数组,并调用push函数添加元素(二维),使用
创建managers
package {
import flash.display.Sprite;
public class Array_filter extends Sprite {
public function Array_filter() {
var employees:Array = new Array();//创建employees数组
employees.push({name:"Employee 1", manager:false});//调用push函数添加二维元素
employees.push({name:"Employee 2", manager:true});
employees.push({name:"Employee 3", manager:false});
trace("Employees:");
employees.forEach(traceEmployee);//调用执行函数traceEmployee(?forEach是啥?看下面)
var managers:Array = employees.filter(isManager);//调用挑选函数isManager
trace("Managers:");
managers.forEach(traceEmployee);//调用执行函数traceEmployee
}
private function isManager(element:*, index:int, arr:Array):Boolean {
return (element.manager == true);//返回判断布尔值
}
private function traceEmployee(element:*, index:int, arr:Array):void {
trace("\t" + element.name + ((element.manager) ? " (manager)" : ""));//判断manager是否为true,如果是输出空格
}
}
}
5. forEach方法[as3.0新增]
as3.0语法: forEach(callback:Function, thisObject:* = null):void
数组的每一个元素执行 callback 方法,不返回任何值
第二个参数 thisObject 是第一个参数 callback 的执行范围,即方法内部的 this ,一般不需指定callback 的参数也都是一样的
参数:
callback:Function--执行函数
function callback(item:*, index:int, array:Array):void;
thisObject:* = null--执行范围
实例一:
创建employees数组,并调用push函数添加元素[二维]
并执行函数traceEmployee
package {
import flash.display.Sprite;
public class Array_forEach extends Sprite {
public function Array_forEach() {
var employees:Array = new Array();//创建数组
employees.push({name:"Employee 1", manager:false});//调用push添加二维元素
employees.push({name:"Employee 2", manager:true});
employees.push({name:"Employee 3", manager:false});
trace(employees);//输出数组
employees.forEach(traceEmployee);//调用执行函数traceEmployee
}
private function traceEmployee(element:*, index:int, arr:Array):void {
trace(element.name + " (" + element.manager + ")");//输出:name (manager)
}
}
}
实例二:
package {
import flash.display.Sprite;
public class Array_forEach_2 extends Sprite {
public function Array_forEach_2() {
var employeeXML:XML = <employees>
<employee name="Steven" manager="false" />
<employee name="Bruce" manager="true" />
<employee name="Rob" manager="false" />
</employees>;
var employeesList:XMLList = employeeXML.employee;//读取节点
var employeesArray:Array = new Array();//创建employeesArray数组
for each (var tempXML:XML in employeesList) {
employeesArray.push(tempXML);//调用push函数添加元素
}
employeesArray.sortOn("@name");//?sorton是啥,看下文
employeesArray.forEach(traceEmployee);//调用执行函数traceEmployee
}
private function traceEmployee(element:*, index:Number, arr:Array):void {
trace(element.@name + ((element.@manager == "true") ? " (manager)" : ""));//判断manager是否为true,为真输出name(manager)为否输出name
}
}
}
6.indexOf 方法 [as3.0新增]
as3.0语法:indexOf(searchElement:*, fromIndex:int = 0):int
查找数组元素,若存在返回元素索引位置,若不存在返回-1
参数:
searchElement:*--查找关键字
fromIndex:int = 0--查找开始索引位置(默认:0)
返回:数值
实例:
package {
import flash.display.Sprite;
public class Array_indexOf extends Sprite {
public function Array_indexOf() {
var arr:Array = new Array(123,45,6789);//创建数组arr
arr.push("123-45-6789");//添加数组元素(字符串)
arr.push("987-65-4321");//添加数组元素(字符串)
var index:int = arr.indexOf("123");//查寻字符串"123"
trace(index); // -1
var index2:int = arr.indexOf(123);//查寻123
trace(index2); // 0
var index2:int = arr.indexOf("123-45-6789");//查寻字符串"123-45-6789"
trace(index2); // 0
}
}
}
7.join 方法
join(sep:*):String
将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串
参数:
sep:*--插入分隔符
返回:字符串
实例一:
var myArr:Array = new Array("one", "two", "three");//不要告诉我看不懂...
var myStr:String = myArr.join(" and ");
trace(myArr); // one,two,three
trace(myStr); // one and two and three
实例二:
var phoneString:String = "(888) 867-5309";
var specialChars:Array = new Array("(", ")", "-", " ");
var myStr:String = phoneString;
var ln:uint = specialChars.length;//定义数组specialChars长度
for(var i:uint; i < ln; i++) {
myStr = myStr.split(specialChars[i]).join("");//分割字符串phoneString并重建数组,再调用join重组字符口串
}
var phoneNumber:Number = new Number(myStr);
trace(phoneString); // (888) 867-5309
trace(phoneNumber); // 8888675309
8. lastIndexOf 方法 [as3.0新增函数]
as3.0语法:lastIndexOf(searchElement:*, fromIndex:int = 0x7fffffff):int
从最后一个索引位置向前查寻数组元素,若存在返回元素索引位置,若不存在返回-1
参数:
searchElement:*--查寻关键字
fromIndex:int = 0x7fffffff--索引开始位置(默认:0x7fffffff)
返回:数值
实例:
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
}
}
}
9.map() 方法 [as3.0新增函数]
as3.0语法:map(callback:Function, thisObject:* = null):Array
数组的每一个元素执行 callback 方法,返回新数组
参数:
callback:Function--执行函数
function callback(item:*, index:int, array:Array):void;
thisObject:* = null--执行范围
返回:数组
实例:
package {
import flash.display.Sprite;
public class Array_map extends Sprite {
public function Array_map() {
var arr:Array = new Array("one", "two", "Three");
trace(arr); // one,two,Three
var upperArr:Array = arr.map(toUpper);//创建upperArr数组并调用执行toUpper函数
trace(upperArr); // ONE,TWO,THREE
}
private function toUpper(element:*, index:int, arr:Array):String {
return String(element).toUpperCase();//小写转大字
}
}
}
10.pop 方法
as3.0语法:function pop():Object
删除数组中最后一个元素,并返回该元素的值。
返回:对象-- 指定的数组中最后一个元素的值。
实例:
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
|
11.push 方法
as3.0语法: function push(... args):uint
将一个或多个元素添加到数组的结尾,并返回该数组的新长度。
参数:
... args-- 要追加到数组中的一个或多个值。
返回:新数组长度
实例一:
var letters:Array = new Array();
letters.push("a");
letters.push("b");
letters.push("c");
trace(letters.toString()); // a,b,c
实例二:
var letters:Array = new Array("a");
var count:uint = letters.push("b", "c");
trace(letters); // a,b,c
trace(count); // 3
12.reverse 方法
as3.0语法: function reverse():Array
在当前位置倒转数组
返回:数组
实例:
var letters:Array = new Array("a", "b", "c");
trace(letters); // a,b,c
letters.reverse();
trace(letters); // c,b,a
13.shift 方法
as3.0语法: function shift():Object
删除数组中第一个元素,并返回该元素
返回:对象
实例:
var letters:Array = new Array("a", "b", "c");
var firstLetter:String = letters.shift();
trace(letters); // b,c
trace(firstLetter); // a
14.slice 方法
as3.0语法:function slice(startIndex:int = 0, endIndex:int = -1):
返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。返回的数组包括 startIndex 元素以及从其开始到 endIndex 元素(但不包括该元素)的所有元素。
如果您没有传递任何参数,则创建原始数组的一个副本。
参数:
startIndex:int = 0--指定片段起始点索引的数字。如果 start 是负数,则起始点从数组的结尾开始,其中 -1 指的是最后一个元素
endIndex:int = -1--指定片段终点索引的数字。如果省略此参数,则片段包括数组中从开头到结尾的所有元素。如果 end 是负数,则终点从数组的结尾指定,其中 -1 指的是最后一个元素。
返回:数组
实例一:
var letters:Array = new Array("a", "b", "c", "d", "e", "f");
var someLetters:Array = letters.slice(1,3);
trace(letters); // a,b,c,d,e,f
trace(someLetters); // b,c
实例二:
var letters:Array = new Array("a", "b", "c", "d", "e", "f");
var someLetters:Array = letters.slice(2);
trace(letters); // a,b,c,d,e,f
trace(someLetters); // c,d,e,f
实例三:
var letters:Array = new Array("a", "b", "c", "d", "e", "f");
var someLetters:Array = letters.slice(-2);
trace(letters); // a,b,c,d,e,f
trace(someLetters); // e,f
15.sort 方法[as3.0新增函数]
as3.0语法:some(callback:Function, thisObject:* = null):Boolean
检测数组中是否有元素满足 callback 方法指定的条件。
参数:
callback:Function--执行函数
thisObject:* = null--执行范围
返回:布尔值
实例:
package {
import flash.display.Sprite;
public class Array_some extends Sprite {
public function Array_some() {
var arr:Array = new Array();
arr[0] = "one";
arr[1] = "two";
arr[3] = "four";
var isUndef:Boolean = arr.some(isUndefined);//调用执行函数isUndefined
if (isUndef) {
trace("array contains undefined values: " + arr);
} else {
trace("array contains no undefined values.");
}
}
private function isUndefined(element:*, index:int, arr:Array):Boolean {
return (element == undefined);
}
}
}
16.sort 方法
as3.0语法:function sort(... args):Array
对数组中的元素进行排序。Flash 根据 Unicode 值排序。(ASCII 是 Unicode 的一个子集。)
默认情况下,Array.sort() 按下面的列表中的说明进行排序:
排序区分大小写(Z 优先于 a)。
按升序排序(a 优先于 b)。
修改该数组以反映排序顺序;在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。
数值字段按字符串方式进行排序,因此 100 优先于 99,因为 "1" 的字符串值比 "9" 的低。
如果您想通过使用不同于默认设置的设置来对数组进行排序,可以使用 options 参数的条目中描述的排序选项之一,或者,也可以创建自己的自定义函数来进行排序。如果您创建自定义函数,则可以通过调用 sort() 方法来使用它,将您的自定义函数的名称用作第一个参数 (compareFunction)。
参数:
... args-- 一个用来确定数组中元素排序顺序的比较函数。给定元素 A 和 B,compareFunction 的结果可具有以下三个值之一:
-1,如果 A 应在排序后的序列中出现在 B 之前
0,如果 A 等于 B
1,如果 A 应在排序后的序列中出现在 B 之后
options:Number [可选] - 所定义常数的一个或多个数字或名称,相互之间由 |(按位"或")运算符隔开,它们将排序的默认行为更改为其它行为。options 参数可接受以下值:
Array.CASEINSENSITIVE 或 1
Array.DESCENDING 或 2
Array.UNIQUESORT 或 4
Array.RETURNINDEXEDARRAY 或 8
Array.NUMERIC 或 16
有关此参数的更多信息,请参见 Array.sortOn() 方法。
注意: Array.sort() 是在 ECMA-262 中定义的,但 Flash Player 7 中引入的数组排序选项是对 ECMA-262 规范的特定于 Flash 的扩展。
实例一:
var vegetables:Array = new Array("spinach",
"green pepper",
"cilantro",
"onion",
"avocado");
trace(vegetables); // spinach,green pepper,cilantro,onion,avocado
vegetables.sort();
trace(vegetables); // avocado,cilantro,green pepper,onion,spinach
实例二:
var vegetables:Array = new Array("spinach",
"green pepper",
"Cilantro",
"Onion",
"Avocado");
vegetables.sort();
trace(vegetables); // Avocado,Cilantro,Onion,green pepper,spinach
vegetables.sort(Array.CASEINSENSITIVE);
trace(vegetables); // Avocado,Cilantro,green pepper,Onion,spinach
实例三:
var vegetables:Array = new Array();
vegetables.push(new Vegetable("lettuce", 1.49));
vegetables.push(new Vegetable("spinach", 1.89));
vegetables.push(new Vegetable("asparagus", 3.99));
vegetables.push(new Vegetable("celery", 1.29));
vegetables.push(new Vegetable("squash", 1.44));
trace(vegetables);
// lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44
vegetables.sort();
trace(vegetables);
// asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44
//The following code defines the Vegetable class
class Vegetable {
private var name:String;
private var price:Number;
public function Vegetable(name:String, price:Number) {
this.name = name;
this.price = price;
}
public function toString():String {
return " " + name + ":" + price;
}
}
实例四:
var vegetables:Array = new Array();
vegetables.push(new Vegetable("lettuce", 1.49));
vegetables.push(new Vegetable("spinach", 1.89));
vegetables.push(new Vegetable("asparagus", 3.99));
vegetables.push(new Vegetable("celery", 1.29));
vegetables.push(new Vegetable("squash", 1.44));
trace(vegetables);
// lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44
vegetables.sort(sortOnPrice);
trace(vegetables);
// celery:1.29, squash:1.44, lettuce:1.49, spinach:1.89, asparagus:3.99
function sortOnPrice(a:Vegetable, b:Vegetable):Number {
var aPrice:Number = a.getPrice();
var bPrice:Number = b.getPrice();
if(aPrice > bPrice) {
return 1;
} else if(aPrice < bPrice) {
return -1;
} else {
//aPrice == bPrice
return 0;
}
}
// The following code defines the Vegetable class and should be in a separate package.
class Vegetable {
private var name:String;
private var price:Number;
public function Vegetable(name:String, price:Number) {
this.name = name;
this.price = price;
}
public function getPrice():Number {
return price;
}
public function toString():String {
return " " + name + ":" + price;
}
}
16.sortOn 方法
as3.0语法:function sortOn(fieldName:Object, options:Object = null):Array
根据数组中的一个或多个字段对数组中的元素进行排序。数组应具有下列特性:
该数组是索引数组,不是关联数组。
该数组的每个元素都包含一个具有一个或多个属性的对象。
所有这些对象都至少有一个公用属性,该属性的值可用于对该数组进行排序。这样的属性称为 field。
如果您传递多个 fieldName 参数,则第一个字段表示主排序字段,第二个字段表示下一个排序字段,依此类推。Flash 根据 Unicode 值排序。(ASCII 是 Unicode 的一个子集。)如果所比较的两个元素中的任何一个不包含在 fieldName 参数中指定的字段,则认为该字段为 undefined,并且在排序后的数组中不按任何特定顺序连续放置这些元素。
默认情况下,Array.sortOn() 按以下方式进行排序:
排序区分大小写(Z 优先于 a)。
按升序排序(a 优先于 b)。
修改该数组以反映排序顺序;在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。
数值字段按字符串方式进行排序,因此 100 优先于 99,因为 "1" 的字符串值比 "9" 的低。
Flash Player 7 添加了 options 参数,您可以使用该参数覆盖默认排序行为。若要对简单数组(例如,仅具有一个字段的数组)进行排序,或要指定一种 options 参数不支持的排序顺序,请使用 Array.sort()。
若要传递多个标志,请使用按位"或"(|) 运算符分隔它们:
my_array.sortOn(someFieldName, Array.DESCENDING | Array.NUMERIC);
Flash Player 8 添加了按多个字段进行排序时为每个字段指定不同的排序选项的功能。在 Flash Player 8 中,options 参数接受一组排序选项,以便每个排序选项对应于 fieldName 参数中的一个排序字段。下面的示例使用降序排序对主排序字段 a 排序,使用数字排序对第二个排序字段 b 排序,使用不区分大小写的排序对第三个排序字段 c 排序:
Array.sortOn (["a", "b", "c"], [Array.DESCENDING, Array.NUMERIC, Array.CASEINSENSITIVE]);
注意:fieldName 和 options 数组必须具有相同数量的元素;否则,将忽略 options 数组。此外,Array.UNIQUESORT 和 Array.RETURNINDEXEDARRAY 选项只能用作数组中的第一个元素;否则,将忽略它们。
参数:
fieldName:Object--一个标识要用作排序值的字段的字符串,或一个数组,其中的第一个元素表示主排序字段,第二个元素表示第二排序字段,依此类推。
options:Object = null-- 所定义常数的一个或多个数字或名称,相互之间由 bitwise or (|) 运算符隔开,它们可以更改排序行为。options 参数可接受以下值:
Array.CASEINSENSITIVE or 1
Array.DESCENDING or 2
Array.UNIQUESORT or 4
Array.RETURNINDEXEDARRAY or 8
Array.NUMERIC or 16
如果您使用标志的字符串形式(例如,DESCENDING),而不是数字形式 (2),则启用代码提示
返回:数组
实例一:
var vegetables:Array = new Array();
vegetables.push(new Vegetable("lettuce", 1.49));
vegetables.push(new Vegetable("spinach", 1.89));
vegetables.push(new Vegetable("asparagus", 3.99));
vegetables.push(new Vegetable("celery", 1.29));
vegetables.push(new Vegetable("squash", 1.44));
trace(vegetables);
// lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44
vegetables.sortOn("name");
trace(vegetables);
// asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44
vegetables.sortOn("price", Array.NUMERIC | Array.DESCENDING);
trace(vegetables);
// asparagus:3.99, spinach:1.89, lettuce:1.49, squash:1.44, celery:1.29
class Vegetable {
public var name:String;
public var price:Number;
public function Vegetable(name:String, price:Number) {
this.name = name;
this.price = price;
}
public function toString():String {
return " " + name + ":" + price;
}
}
实例二:
var records:Array = new Array();
records.push({name:"john", city:"omaha", zip:68144});
records.push({name:"john", city:"kansas city", zip:72345});
records.push({name:"bob", city:"omaha", zip:94010});
for(var i:uint = 0; i < records.length; i++) {
trace(records[i].name + ", " + records[i].city);
}
// Results:
// john, omaha
// john, kansas city
// bob, omaha
trace("records.sortOn('name', 'city');");
records.sortOn(["name", "city"]);
for(var i:uint = 0; i < records.length; i++) {
trace(records[i].name + ", " + records[i].city);
}
// Results:
// bob, omaha
// john, kansas city
// john, omaha
trace("records.sortOn('city', 'name');");
records.sortOn(["city", "name"]);
for(var i:uint = 0; i < records.length; i++) {
trace(records[i].name + ", " + records[i].city);
}
// Results:
// john, kansas city
// bob, omaha
// john, omaha
实例三:
class User {
public var name:String;
public var age:Number;
public function User(name:String, age:uint) {
this.name = name;
this.age = age;
}
public function toString():String {
return this.name + ":" + this.age;
}
}
var users:Array = new Array();
users.push(new User("Bob", 3));
users.push(new User("barb", 35));
users.push(new User("abcd", 3));
users.push(new User("catchy", 4));
trace(users); // Bob:3,barb:35,abcd:3,catchy:4
users.sortOn("name");
trace(users); // Bob:3,abcd:3,barb:35,catchy:4
users.sortOn("name", Array.CASEINSENSITIVE);
trace(users); // abcd:3,barb:35,Bob:3,catchy:4
users.sortOn("name", Array.CASEINSENSITIVE | Array.DESCENDING);
trace(users); // catchy:4,Bob:3,barb:35,abcd:3
users.sortOn("age");
trace(users); // abcd:3,Bob:3,barb:35,catchy:4
users.sortOn("age", Array.NUMERIC);
trace(users); // Bob:3,abcd:3,catchy:4,barb:35
users.sortOn("age", Array.DESCENDING | Array.NUMERIC);
trace(users); // barb:35,catchy:4,Bob:3,abcd:3
var indices:Array = users.sortOn("age", Array.NUMERIC | Array.RETURNINDEXEDARRAY);
var index:uint;
for(var i:uint = 0; i < indices.length; i++) {
index = indices[i];
trace(users[index].name, ": " + users[index].age);
}
// Results:
// Bob : 3
// abcd : 3
// catchy : 4
// barb : 35
17.splice 方法
as3.0语法:function splice(startIndex:int, deleteCount:uint, ... values):Array
给数组添加元素以及从数组中删除元素。此方法会修改数组但不制作副本。
参数:
startIndex:int--一个整数,它指定插入或删除动作开始处的数组中元素的索引。您可以指定一个负整数来指定相对于数组结尾的位置(例如,-1 是数组的最后一个元素
deleteCount:uint--一个整数,它指定要删除的元素数量。该数量包括 startIndex 参数中指定的元素。如果没有为 deleteCount 参数指定值,则该方法将删除从 startIndex 元素到数组中最后一个元素之间的所有值。如果该参数的值为 0,则不删除任何元素。
... values--指定要在 startIndex 参数中指定的插入点处插入到数组中的值
返回:数组
实例:
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
18.toLocaleString 方法 [as3.0新增函数]
as3.0语法:public function toLocaleString():String
类似toString(),与它区别?研究中...,
返回:字符串
19.toString 方法
语法:toString():String
返回一个字符串值,该值表示所指定的 Array 对象中的元素。数组中的每一个元素(从索引 0 开始到最高索引结束)均会转换为一个连接字符串,并以逗号分隔。若要指定自定义的分隔符,请使用 Array.join() 方法。
返回:字符串
实例:
var vegetables:Array = new Array();
vegetables.push(1);
vegetables.push(2);
vegetables.push(3);
vegetables.push(4);
vegetables.push(5);
var vegnums:String = vegetables.toString();
trace(vegnums+",6");
// 1,2,3,4,5,6
20.unshift 方法
as3.0语法:function unshift(... args):uint
将一个或多个元素添加到数组的开头,并返回该数组的新长度.
参数:
... args--一个或多个要插入到数组开头的数字、元素或变量。
返回
返回:数值
实例:
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
|