ActionScript 3.0基础——数组

数组是AS的核心类之一,AS3.0中新增了不少数组的方法,比如indexOf,lastIndexOf,every,some,map和forEach等。看下面实例代码:

package { 
    import flash.display.Sprite; 
    public class ArrayDemo extends Sprite 
    { 
        public function ArrayDemo() 
        { 
            var production:Array=new Array(); 
            production[0]=1000; 
            production[1]=1200; 
            production[2]=1300; 
            production[3]=1200; 
            production[production.length]=1000; 
            production.push(1250); 
            trace(production.length);               //6 
            trace(production[3]);               //1200 
            //用lastIndexOf方法返回某个元素值第一次出现的位置 
            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 + ")"); 
            } 
    } 
}

发表评论