as3 Array(数组)的操作

来源:互联网 发布:刘长卿读音 知乎 编辑:程序博客网 时间:2024/05/18 02:43
记得以前学FLASH的时候,同事就告诉过我,数组和字符串是比较重要的基础的部分,必须要完全掌握。现在记录下来,以观后效。
    
    创建数组:
    var aa:Array =[1,3,5,7,9];//数字型数组
    var aa:Array =["a","b","c","d","e","f"];//字符串型数组
    
    链接数组:concat ()
    varaa:Array = new Array(1, 2, 3); 
    var bb:Array = newArray("a", "b", "c"); 
    var aaAndbb:Array =aa.concat(bb); 
    var bbAndaa:Array =bb.concat(aa); 
    trace(aa); //1,2,3 
    trace(bb); //a,b,c 
    trace(aaAndbb); //1,2,3,a,b,c 
    trace(bbAndaa); //a,b,c,1,2,3

    在数组最后一项添加一个或者多个元素:push()
    var aa:Array= [1,2,3];
    aa.push(4,5,6)
   trace(aa)//输出1,2,3,4,5,6

    在数组第一项后添加一个或者多个元素:unshift()
    var aa:Array =[1,2,3];
    aa.unshift(4,5,6);
   trace(aa)//输出4,5,6,1,2,3

    删除数组中的最后一个元素:pop()
    varaa:Array = [1,2,3];
    aa.pop();
    trace(aa)//输出1,2

    删除数组中第一个元素:shift()
    varaa:Array = [1,2,3];
    aa.shift();
    trace(aa)//输出2,3
   trace(aa[0])//输出2,注意第一个元素已经变为0

   返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。返回的数组包括startIndex 元素以及从其开始到endIndex元素(但不包括该元素)的所有元素。如果您没有传递任何参数,则创建原始数组的一个副本:slice()
   var aa:Array = newArray("a", "b", "c", "d", "e", "f");
    var bb:Array =aa.slice(1,3);

   trace(aa);    // a,b,c,d,e,f
   trace(bb); // b,c
    下面是调用 slice()方法(对元素 2 (c)),从而得到一个数组,其中包含元素[c,d,e,f]
    varaa:Array = new Array("a", "b", "c", "d", "e", "f");
    var bb:Array =aa.slice(2);

    trace(aa);    // a,b,c,d,e,f
    trace(bb); //c,d,e,f
    调用slice() 方法(对倒数第二个元素 (e)),从而得到一个数组,其中包含元素[c,d,e,f]
    varaa:Array = new Array("a", "b", "c", "d", "e", "f");
    var bb:Array =aa.slice(-2);

    trace(aa);    // a,b,c,d,e,f
    trace(bb); // e,f

   给数组添加元素以及从数组中删除元素。此方法会修改数组但不制作副本:splice()
   var aa:Array = newArray("spinach","green pepper","cilantro","onion","avocado");
    var bb:Array =aa.splice(2, 2);
    trace(aa); //spinach,green pepper,avocado
    trace(bb);   // cilantro,onion

    aa.splice(1, 0,bb);
    trace(aa); //spinach,cilantro,onion,green pepper,avocado

 


    反转数组顺序:reverse()
    varaa:Array = [1,2,3];
    aa.reverse();
   trace(aa);//输出3,2,1

   将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串:join()
    varaa:Array = new Array("one", "two", "three");
    var bb:String =aa.join(" _ ");
    trace(aa); //one,two,three
    trace(bb); // one _ two_ three

   使用全等运算符 (===)搜索数组中的项,并返回项的索引位置:indexOf()
    varaa:Array = new Array(123,45,6789);
   aa.push("123-45-6789");//向数组aa添加123-45-6789
   aa.push("987-65-4321");//向数组aa添加987-65-4321
          
    var bb:int =aa.indexOf("123");//在数组aa中搜索字符串123
    trace(bb); // -1 数组中没有字符串123,所以输出-1
          
    var cc:int =aa.indexOf(123);
    trace(cc); // 0 数组中第一项为int型的123,所以会输出第一项的索引0

    搜索数组中的项(从最后一项开始向前搜索),并使用全等运算符(===) 返回匹配项的索引位置:lashIndexOf()
    varaa:Array = new Array(123,45,6789,123,984,323,123,32);
    var bb:int =aa.indexOf(123);
    trace(bb); // 0
    var cc:int =aa.lastIndexOf(123);
    trace(cc); // 6 输出的是从最后一项开始查询到的123,但索引值是6,因此输出了6.但我们看到数组中有3个123,因此,如果我们想都输出的话,要怎么办呢?我们用下面的循环遍历来解决
   for(var i:int;i<aa.length; i++){
if(aa[i]==123){
trace(i)//输出0 3 6
}
    }

   对数组中的元素进行排序: sort()
    varaa:Array = [7,3,32,64,96,13,42]; 
   aa.sort(); 
    trace(aa);//输出13,3,32,42,64,7,96 sort()方法排列方法如下[此数组满足了第四条方法]:
  • 排序区分大小写(Z 优先于 a)。
  • 按升序排序(a 优先于 b)。
  • 修改该数组以反映排序顺序;在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。
  • 元素无论属于何种数据类型,都作为字符串进行排序,所以 100 在 99 之前,这是因为 "1" 的字符串值小于 "9"的字符串值。
  • 如果我们要按元素的值的大小来排列呢?这个排列远远不能让我们满足,因此我们需要使用NUMERIC
   var aa:Array =[7,3,32,64,96,13,42]; 
   aa.sort(Array.NUMERIC); 
    trace(aa);//输出3,7,13,32,42,64,96   
   上面的输出,同时解决了取出数组中的最大值和最小值了。
   trace(aa[0])//输出最小值3
   trace(aa[aa.length-1])//输出最大值96

   根据数组中的一个或多个字段对数组中的元素进行排序:sortOn()
   var records:Array = newArray();
   records.push({name1:"john", city:"omaha", zip:68144});
   records.push({name1:"john",city:"kansas city", zip:72345});
   records.push({name1:"bob",city:"omaha", zip:94010});
   trace(records);

    for(vari:uint = 0; i < records.length; i++) {
      trace(records[i].name1 + ", " +records[i].city);
    }
    //输出:
    //john, omaha
    //john, kansas city
    // bob,omaha

   trace("records.sortOn('name','city');");
   records.sortOn(["name","city"]);
    for(varj:uint = 0; j < records.length; j++) {
      trace(records[j].name1 + ", " + records[j].city);
    }
    //Results:
    // bob,omaha
    //john, kansas city
    //john, omaha

   trace("records.sortOn('city','name1');");
   records.sortOn(["city","name1"]);
    for(vark:uint = 0; k < records.length; k++) {
      trace(records[k].name1 + ", " +records[k].city);
    }
    //Results:
    //john, kansas city
    // bob,omaha
    //john, omaha
   
   随机输出数组中的一项
    varaa:Array = ["a","b","c","d","e","f"];
    var i:int =Math.floor(Math.random()*aa.length)
    trace(aa[i])

0 0