Flex3.2 中数组的学习 笔记

package com.yoyo
{
 
 /**
  * 数组Array中的方法、属性、学习  
  * 注意:  每一个方法要分开测试,以免有影响   控制台打印,需要在Debug模式下运行才可以使用
  */
 public class _Array_class
 {
  private var initArray:Array;
  public function _Array_class()
  {
   initArray=new Array("ABC",123,"EFG","MNXO");
  }
  
  
  /**
   * Array(numElements:int = 0) 允许创建指定元素数量的数组。
   */
  public function array_Array():void{
   var tempArray:Array=new Array();
   trace("默认数组的长度:"+tempArray.length+"默认数组的值"+tempArray[0]);
   
   
   var tempArray2:Array=new Array(5);
   trace("默认数组的长度:"+tempArray2.length+"默认数组的值"+tempArray2[0]);
   for each(var e:Object in tempArray2){    //只遍历数组中存在的值 ,像undefined的元素责不遍历
    trace("数组中的每一个元素为:"+e);
   }
   tempArray2[2]="第三个元素值 ";
   for each(var e1:Object in tempArray2){
    trace("数组中的每一个元素为:"+e1);
   }
  }
  
  /**
   * Array(... values)  允许创建包含指定元素的数组。
   */
  public function array_Array1():void{
   var tempArray:Array=new Array("ABC",123,null,"",undefined,"EFG");  //此处为数组元数指定为undefined确遍历了
   trace("数组的长度为:"+tempArray.length);
   for each(var e:Object in tempArray){
    trace("数组中的每一个元素为:"+e);
   }
  }
  
  /*
   * shift():*  删除数组中第一个元素,并返回该元素。
   */
  public function array_shift():void{
   trace("删除前数组中的元素:"+"(长度:"+initArray.length+")");
   for each(var e:Object in initArray){
    trace(e.toString());
   }
   trace("删除的元素元:"+initArray.shift());
   trace("删除后数组中的元素:"+"(长度:"+initArray.length+")");
   for each(var e1:Object in initArray){
    trace(e1.toString());
   }
  }
 
  /*
   * pop():*  删除数组中最后一个元素,并返回该元素的值。
   */
  public function array_pop():void{
   trace("删除前数组中的元素:"+"(长度:"+initArray.length+")");
   for each(var e:Object in initArray){
    trace(e.toString());
   }
   trace("删除的元素元:"+initArray.pop());
   trace("删除后数组中的元素:"+"(长度:"+initArray.length+")");
   for each(var e1:Object in initArray){
    trace(e1.toString());
   }
  }
  
  
  /**
   * unshift(... args):uint  将一个或多个元素添加到数组的开头,并返回该数组的新长度。
   */
  public function array_unshift():void{
   
   trace("数组的初始数据:长度:("+initArray.length+")");
   for each(var e:Object in initArray){
    trace(e.toString());
   }
   trace("数组新长度为:"+initArray.unshift("增加元素1","增加元素2","增加元素3","增加元素4"));
   for each(var e1:Object in initArray){
    trace(e1.toString());
   }
  }
  /*
   *  push(... args):uint 将一个或多个元素添加到数组的结尾,并返回该数组的新长度。
   */
  public function array_push():void{
   trace("添加前数组中的元素:"+"(长度:"+initArray.length+")");
   for each(var e:Object in initArray){
    trace(e.toString());
   }
   trace("新数组的长度:"+initArray.push("再加一个"));
   for each(var e1:Object in initArray){
    trace(e1.toString());
   }
  }
  
  /**
   *  slice(startIndex:int = 0, endIndex:int = 16777215):Array  返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。
   *
   * 返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。返回的数组包括 startIndex 元素以及从其开始到 endIndex 元素(但不包括该元素)的所有元素。
         * 如果您没有传递任何参数,则创建原始数组的一个副本。
                             
                            参数 :  startIndex:int (default = 0) — 一个数字,指定片段起始点的索引。如果 startIndex 是负数,则起始点从数组的结尾开始,其中 -1 指的是最后一个元素。 
                 endIndex:int (default = 16777215) — 一个数字,指定片段终点的索引。如果省略此参数,则片段包括数组中从开头到结尾的所有元素。如果 endIndex 是负数,则终点从数组的结尾指定,其中 -1 指的是最后一个元素。 
                            返回        Array —    一个数组,由原始数组中某一范围的元素组成。 

   */
     public function array_slice():void{
      var letters:Array = new Array("a", "b", "c", "d", "e", "f");
      var someLetters:Array = letters.slice(1,3);
    trace(letters);     // a,b,c,d,e,f
   trace(someLetters); // b,c
     }
    
     /**
      * 下面的代码创建一个 Array 对象 letters,其中包含元素 [a,b,c,d,e,f]。
      * 然后创建数组 someLetters,方法是调用 slice() 方法(对元素 2 (c)),从而得到一个数组,其中包含元素 [c,d,e,f]。
      */
     public function array_slice1():void{
      var letters:Array = new Array("a", "b", "c", "d", "e", "f");
      var someLetters:Array = letters.slice(2);
   trace(letters);     // a,b,c,d,e,f
   trace(someLetters); // c,d,e,f

     }
    
     /**
      * 下面的代码创建一个 Array 对象 letters,其中包含元素 [a,b,c,d,e,f]。
      * 然后创建数组 someLetters,方法是调用 slice() 方法(对倒数第二个元素 (e)),从而得到一个数组,其中包含元素 e 和 f。
      */
     public function array_slice2():void{
      var letters:Array = new Array("a", "b", "c", "d", "e", "f");
      var someLetters:Array = letters.slice(-2);
   trace(letters);     // a,b,c,d,e,f
   trace(someLetters); // e,f

     }
    
    
    
      public function array_splice():void{
       
       //原始值 :"ABC",123,"EFG","MNXO"
        var spliced:Array = initArray.splice(2, 2);
       
//       trace("初始数组的数据:长度("+initArray.length+")");
//   for each(var e:Object in initArray){
//    trace(e);
//   }

 
   
   trace(initArray); // "ABC",123
//   trace("操作后数组的数据:长度("+spliced.length+")");
//   for each(var e1:Object in spliced){
//    trace(e1);
//   }
   trace(spliced);    // "EFG","MNXO"
   
   initArray.splice(1, 0, spliced);
   
//   trace("初始数组的数据:长度("+initArray.length+")");
//   for each(var e2:Object in initArray){
//    trace(e2);
//   }
   trace(initArray); // "ABC","EFG","MNXO",123

   trace("初始数组的数据:长度("+initArray.length+")");   //注意,新添加进来的数据只是作为原数组中的一个元素
   for each(var e2:Object in initArray){
    trace(e2);
   }
//   ABC
//   EFG,MNXO
//   123

      }
    
    
     /**
      *  将参数中指定的元素与数组中的元素连接,并创建新的数组。如果这些参数指定了一个数组,将连接该数组中的元素。
      *  ... args —  要连接到新数组中的任意数据类型的值(如数字、元素或字符串)。如果未传递任何值,则新数组将是原始数组的副本。
      *  Array —     一个数组,其中包含此数组中的元素,后跟参数中的元素。
      *
      *  •包含数字 1、2 和 3 的 numbers 数组。
   * •包含字母 a、b 和 c 的 letters 数组。
   * •调用 concat() 方法生成数组 [1,2,3,a,b,c] 的 numbersAndLetters 数组。
   * •调用 concat() 方法生成数组 [a,b,c,1,2,3] 的 lettersAndNumbers 数组。
      */
     public function array_concat():void{
      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
     }
    
     /**
      * 对数组中的每一项执行测试函数,直到获得对指定的函数返回 false 的项。
      * 使用此方法可确定数组中的所有项是否满足某一条件,如具有的值小于某一特定数值
      */
     public function array_every():void{
      var numberArray:Array=new Array(1,2,3,4);
      trace(numberArray.every(isNumber));
      var objArray:Array=new Array(1,"b","c");
      trace(objArray.every(isNumber));
     }
    
     private function isNumber(element:*,i:int,arr:Array):Boolean{
      return (element is Number);
     }
    
    
     /**
      * 对数组中的每一项执行函数。
      */
     public function array_foreach():void{
      var employees:Array = new Array();
            employees.push({name:"Employee 1", manager:false});
            employees.push({name:"Employee 2", manager:true});
            employees.push({name:null, manager:null});
            employees.push({name:undefined, manager:undefined});
            employees.push({name:"", manager:""});
            employees.push({name:"Employee 6", manager:false});
            trace(employees);
   employees.forEach(traceArrayElement);
     }
    
     private function traceArrayElement(element:*,index:int,arr:Array):void{
      trace(element.name+"("+element.manager+")");
     }
    
     /**
      * 对数组中的每一项执行函数并构造一个新数组,其中包含与原始数组中的每一项的函数结果相对应的项。
      */
     public function array_map():void{
        var arr:Array = new Array("aa","bb","cc","dd","ee","ff");
        var newArray:Array=arr.map(toUpper);
     trace(arr);  //aa,bb,cc,dd,ee,ff
     trace(newArray); //AA,BB,CC,DD,EE,FF
     }
    
     private function toUpper(element:*,i:int,arr:Array):String{
      return String(element).toUpperCase();
     }
    
     /**
      * 使用全等运算符 (===) 搜索数组中的项,并返回项的索引位置。
      * searchElement:* — 要在数组中查找的项。
      * fromIndex:int (default = 0) — 数组中的位置,从该位置开始搜索项。
      */
     public function array_indexOf():void{
      trace(initArray.indexOf(123,1));
      trace(initArray.indexOf("123"));
     }
    
    
     public function array_lastIndexof():void{
      var tempArray:Array=new Array("A","B","C","A","C","A");
      trace(tempArray.indexOf("A")); //0
      trace(tempArray.lastIndexOf("A")); //5
     }
    
    
     /**
      * 将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串。
      * 嵌套数组总是以逗号 (,) 分隔,而不使用传递给 join() 方法的分隔符分隔。
      * 参数      sep:* (default = NaN) — 在返回字符串中分隔数组元素的字符或字符串。如果省略此参数,则使用逗号作为默认分隔符。
      * 返回      String — 一个字符串,由转换为字符串并由指定参数分隔的数组元素组成。 
      */
     public function array_join():void{
      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
     }
    
    
     /**
      * 字符串的分割成数组,将数组连接成字符串(目的:将字符串转换成指字的字符串)
      */
     public function array_split():void{
      var str:String="abcd,efg,hijk,,mno";
      var arr:Array=str.split(",");//字符串分割成数组
      trace(arr.length); //5
      trace(arr); //abcd,efg,hijk,,mno
      var str2:String=arr.join("");
      trace(str2);  //abcdefghijkmno
     }
    
     public function array_split1():void{
       var strPhone:String="(8610)010-58022266-145";
       var numberPhone:String=strPhone;
          var specialChars:Array=new Array("(",")","-"," ");
          for(var i:uint=0;i<specialChars.length;i++){
           numberPhone=numberPhone.split(specialChars[i]).join("");
          }
          trace(strPhone);  //(8610)010-58022266-145
          trace(numberPhone); //861001058022266145
     }
    
     /**
      * 在当前位置倒转数组。
      */
     public function array_reverse():void{
      trace(initArray); //ABC,123,EFG,MNXO
      var newArray:Array=initArray.reverse();
      trace(newArray); //MNXO,EFG,123,ABC
     }
    
     /**
      * 对数组中的每一项执行测试函数,直到获得返回 true 的项。使用此方法确定数组中的所有项是否满足条件,如具有小于某一特定数值的值。
      */
     public function array_some():void{
      var isExist:Boolean=initArray.some(findValue);
      if(isExist){
       trace("数组中包含该值123:"+initArray);
      }else{
       trace("数组中不包含该值123:"+initArray);
      }
     }
    
     private function findValue(ele:*,i:int,arr:Array):Boolean{
      return (arr[i]=="123");
     }
    
    
     /**
      * 下面的代码创建 Array 对象 vegetables,其中包含元素 [spinach, green pepper, cilantro, onion, avocado]。
      * 然后,通过 sort() 方法对该数组进行排序,调用该方法时不带参数。
      * 结果是 vegetables 按字母顺序排序 ([avocado, cilantro, green pepper, onion, spinach])。
      */
     public function array_sort():void{
      var vegetables:Array = new Array("spinach",
                 "green pepper",
                 "cilantro",
                 "onion",
                 "avocado");

   trace(vegetables); // spinach,green pepper,cilantro,onion,avocado
   vegetables.sort();
   trace(vegetables); // avocado,cilantro,green pepper,onion,spinach
      
     }
    
    
     /**
      * 下面的代码创建 Array 对象 vegetables,其中包含元素 [spinach, green pepper, Cilantro, Onion, and Avocado]。
      * 然后,通过 sort() 方法对该数组进行排序,第一次调用该方法时不带参数,其结果是 [Avocado,Cilantro,Onion,green pepper,spinach]。然后再次调用 sort()(对 vegetables),调用时将 CASEINSENSITIVE 常数作为参数。
      * 结果是 vegetables 按字母顺序排序 ([Avocado, Cilantro, green pepper, Onion, spinach])。
      */
     public function array_sort1():void{
      var vegetables:Array = new Array("spinach",
                 "green pepper",
                 "Cilantro",
                 "Onion",
                 "Avocado");

   vegetables.sort();
   trace(vegetables); // Avocado,Cilantro,Onion,green pepper,spinach
   //CASEINSENSITIVE : uint = 1 [静态] 指定 Array 类排序方法为不区分大小写的排序。
   vegetables.sort(Array.CASEINSENSITIVE);
   trace(vegetables); // Avocado,Cilantro,green pepper,Onion,spinach
      
     }
    
    
     public function array_sort2():void{
      var vegetables:Array = new Array();
   vegetables.push(new Vegetable("lettuce", 1.49));
   vegetables.push(new Vegetable("spinach", 1.89));
   vegetables.push(new Vegetable("asparagus", 3.99));
   vegetables.push(new Vegetable("celery", 1.29));
   vegetables.push(new Vegetable("squash", 1.44));

   trace(vegetables);
   vegetables.sort();
   trace(vegetables);

     }
    
     /**
      * 按自定义的排序方式进行排序
      */
     public function array_sort3():void{
         var vegetables:Array = new Array();
   vegetables.push(new Vegetable("lettuce", 1.49));
   vegetables.push(new Vegetable("spinach", 1.89));
   vegetables.push(new Vegetable("asparagus", 3.99));
   vegetables.push(new Vegetable("celery", 1.29));
   vegetables.push(new Vegetable("squash", 1.44));
   vegetables.sort(sortOnPrice);
   trace(vegetables);
     }
    
 
    
     private function sortOnPrice(a:Vegetable,b:Vegetable):int{
      if(a.getPrice()>b.getPrice()){
       return 1;
      }else if(a.getPrice()==b.getPrice()){
       return 0;
      }else{
       return -1;
      }
     }
    
    
     /**
      * 按数字进行排序
      */
      public function array_sort4():void{
      var numbers:Array = new Array(3,5,100,34,10);

   trace(numbers); // 3,5,100,34,10
   numbers.sort();
   trace(numbers); // 10,100,3,34,5
   numbers.sort(Array.NUMERIC); //按数字排序
   trace(numbers); // 3,5,10,34,100
     }
    
     /**
      * 根据数组中的一个或多个字段对数组中的元素进行排序。
      */
     public function array_sortOn():void{
      var vegetables:Array = new Array();
   vegetables.push(new Vegetable("lettuce", 1.49));
   vegetables.push(new Vegetable("spinach", 1.89));
   vegetables.push(new Vegetable("asparagus", 3.99));
   vegetables.push(new Vegetable("celery", 1.29));
   vegetables.push(new Vegetable("squash", 1.44));
   
   trace(vegetables);
   // lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44
   
   vegetables.sortOn("name");
   //vegetables.sortOn(["name","price"]);
   trace(vegetables);
   // asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44
   
   vegetables.sortOn("price", Array.NUMERIC | Array.DESCENDING);
   trace(vegetables);
   // asparagus:3.99, spinach:1.89, lettuce:1.49, squash:1.44, celery:1.29
   

     }
    
     /**
      * 对数组的多个字段进行排序
      */
     public function array_sortOn1():void{
      var records:Array = new Array();
   records.push({name:"john", city:"omaha", zip:68144});
   records.push({name:"john", city:"kansas city", zip:72345});
   records.push({name:"bob", city:"omaha", zip:94010});
   
   for(var i:uint = 0; i < records.length; i++) {
       trace(records[i].name + ", " + records[i].city);
   }
   // Results:
   // john, omaha
   // john, kansas city
   // bob, omaha
   
   trace("records.sortOn('name', 'city');");
   records.sortOn(["name", "city"]);
   for(var j:uint = 0; j < records.length; j++) {
       trace(records[j].name + ", " + records[j].city);
   }
   // Results:
   // bob, omaha
   // john, kansas city
   // john, omaha
   
   trace("records.sortOn('city', 'name');");
   records.sortOn(["city", "name"]);
   for(var k:uint = 0; k < records.length; k++) {
       trace(records[k].name + ", " + records[k].city);
   }
   // Results:
   // john, kansas city
   // bob, omaha
   // john, omaha

     }
    
    
     public function array_sortOn2():void{
      var users:Array = new Array();
   users.push(new User("Bob", 3));
   users.push(new User("barb", 35));
   users.push(new User("abcd", 3));
   users.push(new User("catchy", 4));
   
   trace(users); // Bob:3,barb:35,abcd:3,catchy:4
   
   users.sortOn("name");
   trace(users); // Bob:3,abcd:3,barb:35,catchy:4
   
   users.sortOn("name", Array.CASEINSENSITIVE);
   trace(users); // abcd:3,barb:35,Bob:3,catchy:4
   
   users.sortOn("name", Array.CASEINSENSITIVE | Array.DESCENDING);
   trace(users); // catchy:4,Bob:3,barb:35,abcd:3
   
   users.sortOn("age");
   trace(users); // abcd:3,Bob:3,barb:35,catchy:4
   
   users.sortOn("age", Array.NUMERIC);
   trace(users); // Bob:3,abcd:3,catchy:4,barb:35
   
   users.sortOn("age", Array.DESCENDING | Array.NUMERIC);
   trace(users); // barb:35,catchy:4,Bob:3,abcd:3
   
   var indices:Array = users.sortOn("age", Array.NUMERIC | Array.RETURNINDEXEDARRAY);
   var index:uint;
   for(var i:uint = 0; i < indices.length; i++) {
       index = indices[i];
       trace(users[index].name, ": " + users[index].age);
   }
   
   // Results:
   // Bob : 3
   // abcd : 3
   // catchy : 4
   // barb : 35
     }
  
  
  /*
     Array(numElements:int = 0)允许创建指定元素数量的数组。
     Array(... values)  允许创建包含指定元素的数组。
     push(... args):uint 将一个或多个元素添加到数组的结尾,并返回该数组的新长度。
     shift():* 删除数组中第一个元素,并返回该元素。
  */
  public function arrayAssignment():void{
   
  
   trace("原来数组一的值:");
   for each(var e:Object in initArray){
    trace(e.toString());
   }
   
   var twoArray:Array=initArray;
   trace("原来数组二的值:");
   for each(var e1:Object in twoArray){
    trace(e1.toString());
   }
   trace('向数组oneArray.push("aa","bb","ee")中添加新元素后返回新的数组长度:'+initArray.push("aa","bb","ee"));//将一个或多个元素添加到数组的结尾,并返回该数组的新长度。
   trace("删除数组中第一个元素,并返回该元素:"+initArray.shift());//shift():* 删除数组中第一个元素,并返回该元素
   
   trace("数组一的值:");
   for each(var e2:Object in initArray){
    trace(e2.toString());
   }
   
   trace("数组二的值:");
   for each(var e3:Object in twoArray){
    trace(e3.toString());
   }
   
   
  }
  
  public function getOneArray():uint{
   var oneArray:Array=new Array();
   return oneArray.length;
  }
  
  public function getTwoArray():uint{
   var twoArray:Array=new Array(5);
   return twoArray.length;
  }
  
  public function getThree():void{
   var threeArray:Array =new Array(5);
   for(var i:uint=0;i<threeArray.length;i++){
    trace(threeArray[i]);
   }
  }
  
  
  public function getFour():void{
   var fourArray:Array=new Array(5);
   trace("长度为:"+fourArray.length);
   for(var i:uint=0;i<fourArray.length;i++){
    trace("循环中的第"+i+"个:"+fourArray[i]);
   }
      fourArray[0]="第一个值";
   fourArray.push("测试");
   
   for(var j:uint=0;j<fourArray.length;j++){
    trace("循环中的第"+j+"个:"+fourArray[j]);
   }
   
   trace("长度为:"+fourArray.length);
  }
  
  
  
  

 }
 
 
 
 
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值