新手学习Flash as3.0(一)之Array函数
以下是我对新手在学习Flash as3.0之Array函数中遇到的相关问题及解答的一些整理,
希望对大家进一步学习Flash as3.0有所提高。
这是一系列的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()
将参数中指定的元素与数组中的元素连接,并创建新的数组
Flash 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 函数方法指定的条件。
Flash 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新增]
Flash 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新增]
Flash 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新增]
Flash 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新增函数]
Flash 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新增函数]
Flash 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 方法
Flash 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
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |