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 + ")"); 
    } 
  } 
}

Happy coding 🙂

发表评论

电子邮件地址不会被公开。 必填项已用*标注