发新话题
打印

ActionScript 3.0基础——数组

ActionScript 3.0基础——数组

[这个贴子最后由Flying在 2007/03/18 06:03pm 第 1 次编辑]

数组是AS的核心类之一,AS3.0中新增了不少数组的方法,比如说indexOf,lastIndexOf,every,some,map和forEach等。看下面实例代码:
package
{
import flash.display.Sprite;
public class ArrayDemo extends Sprite
{
public function ArrayDemo()
{
//用new运算符声明一个索引数组(用[]运算符会更简捷)
var production:Array=new Array();
//使用数组访问运算符 ([]) 新增元素
production[0]=1000;
production[1]=1200;
production[2]=1300;
production[3]=1200;
//使用变量动态新增元素
production[production.length]=1000;
//使用push方法新增元素
production.push(1250);
//返回数组的元素个数
trace(production.length);//6
//使用数组下标访问元素
trace(production[3]);//1200
//用indexOf方法返回某个元素值第一次出现的位置
trace(production.indexOf(1200));//1
//用lastIndexOf方法返回某个元素值最后一次出现的位置
trace(production.lastIndexOf(1200));//3
//用new运算符声明一个关联数组(用{}运算符会更简捷)
var salesVolume:Array=new Array();
salesVolume["Jan"]=800;
salesVolume["Feb"]=1200;
salesVolume["Mar"]=1200;
salesVolume["Apr"]=1100;
salesVolume["May"]=800;
salesVolume["Jun"]=1200;
//使用数组访问运算符 ([]) 访问数组元素值
trace(salesVolume["Apr"]);//1100
//使用点运算符 (.) 访问数组元素值
trace(salesVolume.Apr);//1100
//用new运算符声明一个以对象作为元素的关联数组,对象的属性为元素名,对象的属性值为元素值
var sale:Array=new Array();
sale.push({month:"Jan",volume:800});
sale.push({month:"Feb",volume:1200});
sale.push({month:"Mar",volume:1200});
sale.push({month:"Apr",volume:1100});
sale.push({month:"May",volume:800});
sale.push({month:"Jun",volume:1200});
//用every方法遍历数组,检验其所有元素是不是符合某个标准,全部满足才返回true
trace(sale.every(everySale));    //true
//用every方法遍历数组,只要有一个符合某个标准就返回true
trace(sale.some(someSale));    //true
//用filter方法遍历数组,返回所有符合某个标准的元素组成的数组
trace(sale.filter(filterSale).length);  //4
//返回由所有元素执行map的参数函数的返回值组成的新数组
var mapArr:Array = sale.map(mapSale);
            trace(mapArr); // 900,1300,1300,1200,900,1300
//返回所有元素执行forEach的参数函数的值
           sale.forEach(traceSale);//Jan (800) Feb (1200) Mar (1200)...
}
private function everySale(item:*, index:int, array:Array):Boolean
{
        return (item.volume >600);
        }
        private function someSale(item:*, index:int, array:Array):Boolean
        {
        return (item.volume >1100);
        }
        private function filterSale(item:*, index:int, array:Array):Boolean
        {
        return (item.volume >1000);
        }
        private function mapSale(item:*, index:int, arr:Array):int
       {
            return item.volume+100;
        }
private function traceSale(item:*, index:int, arr:Array):void
{
            trace(item.month + " (" + item.volume + ")");
        }
}
}
不难看出,AS3.0数组的新增功能,和Java中的Hash,Map和Dictionary的用法很相近。

TOP

ActionScript 3.0基础——数组

不错,继续~~~
~_~

TOP

ActionScript 3.0基础——数组

支持!严重关注!

TOP

发新话题