Array Vector 数组
package
{
import flash.display.Sprite;
public class demo1 extends Sprite
{
/**Array索引数组array*/
private var array:Array;
/**Vector 索引数组array2*/
private var array2:Vector.<int>;
/**Vector 索引数组array3*/
private var array3:Vector.<int>;
/**Vector 索引数组array4*/
private var array4:Vector.<int>;
/**Vector 索引数组array5*/
private var array5:Vector.<int>;
/**Vector 索引数组array6*/
private var array6:Vector.<int>;
/**关联数组*/
private var array7:Array;
public function demo1()
{
//创建Array 索引数组 不限制类型
array = new Array(7);
array[0] = 0;
array[1] = 1;
array[2] = 2;
array[3] = 3;
array[4] = 4;
array[5] = 5;
array[6] = 6;
array.push(1);
for(var i:int = 0;i<array.length;i++){
trace(array[i]);
}
//delete 数组元素 只会把数组元素值修改成 undefined 不会删除这个元素 数组的长度不变
delete array[1];
trace(array[1]);
trace(array.length);
for(var j:int = 0;j<array.length;j++){
trace(array[j]);
}
//修改 数组长度 会截断数组或增长数组 从而删除元素 或增加元素
array.length = 10;
for(var w:int = 0;w<array.length;w++){
trace(array[w]);
}
//创建Vector 索引数组 限制类型 为 int
array2 = new Vector.<int>;
array2.push(1);
array2.push(2);
trace(array2[1]);
//创建Vector 索引数组 限制类型为 int 数组预知长度 7
array3 = new Vector.<int>(7);
array3.push(8);
for(var ii:int = 0;ii<array3.length;ii++){
trace(array3[ii]);
}
//创建Vector 索引数组 限制类型为 int 数组预知长度 7 数组长度 限制 true 固定长度
array4 = new Vector.<int>(1,true);
array4[0] = 1;
array4[0]= 2; //可以赋值和修改 内容 不可增加元素 因为长度已经固定
trace(array4[0]);
//创建Vector 索引数组 文本语法方式
array5 = new <int>[1,2,3,4,5,6,7,8];
trace(array5[array5.length-1]);
//创建Vector 索引数组 Vector.<T>()全局函数返回方式
array6 = Vector.<int>([1,2,3,4,5,6,7,8,9]);
trace(array6[0]);
//关联数组
array7 = new Array();
array7["one"] = "one";
array7["two"] = "two";
array7.three = "three";
trace(array7[1]); //用 Array 创建 键值关联数组 无法用 索引来访问数组 打印结果 undefined
trace(array7["three"]); //只能用 键来访问
//另一种关联数组 object 对象
var obj:Object = new Object();
obj.one = "one";
obj["two"] = "two";
trace(obj["one"]);
trace(obj.two);
}
/**深度复制的原因
Array 类不具有复制数组的内置方法。通过调用不带参数的 concat() 或 slice() 方法,可以创建数组的“ 浅副本”。在浅副本中,
如果原始数组具有对象元素,则仅复制指向对象的引用而非对象本身。与原始数组一样,副本也指向相同的对象。对对象所做
的任何更改都会在两个数组中反映出来。
在“ 深副本” 中,还将复制原始数组中的所有对象,从而使新数组和原始数组指向不同的对象。深度复制需要多行代码,通常
需要创建函数。可以将此类函数作为全局实用程序函数或 Array 子类的方法来进行创建*/
/**深度复制数组方法*/
import flash.utils.ByteArray;
private function clone(source:Object):*
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source);
myBA.position = 0;
return(myBA.readObject());
}
}
}