数组是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 + ")"); } } }
Happy coding 🙂