as3 数组操作

创建数组:
  var aa:Array = [1,3,5,7,9];//数字型数组
  var aa:Array = ["a","b","c","d","e","f"];//字符串型数组
 
  链接数组:concat ()
  var aa:Array = new Array(1, 2, 3);
  var bb:Array = new Array("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()
  var aa:Array = [1,2,3];
  aa.pop();
  trace(aa)//输出1,2

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

  返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。返回的数组包括 startIndex 元素以及从其开始到 endIndex 元素(但不包括该元素)的所有元素。如果您没有传递任何参数,则创建原始数组的一个副本:slice()
  var aa:Array = new Array("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]
  var aa: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]
  var aa: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 = new Array("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()
  var aa:Array = [1,2,3];
  aa.reverse();
  trace(aa);//输出3,2,1

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

  使用全等运算符 (===) 搜索数组中的项,并返回项的索引位置:indexOf()
  var aa: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()
  var aa: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
if(aa[i]==123){
trace(i)//输出0 3 6
}
  }

  对数组中的元素进行排序: sort()
  var aa: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 = new Array();
  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(var i: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(var j: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(var k:uint = 0; k < records.length; k++) {
    trace(records[k].name1 + ", " + records[k].city);
  }
  // Results:
  // john, kansas city
  // bob, omaha
  // john, omaha
 
  随机输出数组中的一项
  var aa:Array = ["a","b","c","d","e","f"];
  var i:int = Math.floor(Math.random()*aa.length)
  trace(aa[i])

你可能感兴趣的:(as3 数组操作)