flash.utils.Dictionary与Array,ArrayConllection,Object, for与for each

1.for与for each:
for..in 循环用来基于键进行循环访问;而 for each..in 循环用来基于与每个键关联的值进行循环访问。


2.flash.utils.Dictionary与Array,ArrayConllection,Object:

Dictionary类和Object唯一的区别在于:

Dictionary对象可以使用非字符串作为键值对的键。Dictionary类用于创建属性的动态集合,该集合使用全等运算符 (===) 对非原始对象键进行键比较。将对象用作键时,会使用对象的标识来查找对象,而不是使用在对象上调用 toString() 所返回的值.

无论用什么类型的变量作为键,都将被转换成字符串。同时,如果你使用了不同的对象作为键,都会北转换成字符串"[object Object]"作为键,因此而指向了同一个数据。
Dictionary类将没有这个限制,你可以将键设置成任何一种数据类型。

import mx.collections.ArrayCollection;
   import mx.controls.Alert;
   protected function label1_clickHandler(event:MouseEvent):void
   {
    var obj:Object=new Object();
    obj[1]=1;
    obj["name"]='abc';
    obj[new Object()]=new Number(3);
    for(var k:String in obj){
     trace(k);
     trace(" ----"+obj[k]);
    }
    
    // var arr:Array=new Array()[1,'abc',new Object(),new Array()]; //arr=null,不支持这种写法
    // var arrC:ArrayCollection=new ArrayCollection()[1,'abc',new Object(),new Array()]; //arrC=null
    var names:Array = new Array("John", "Jane", "David");
    var arr:Array=new Array();
    arr[0]=1;
    arr[1]='abc';
    arr[2]=new Object();
    arr[3]=new Array(); //空数组,没有值
    arr[4]=['zhangsan',23,'男']; //数组里面套数组
    
    var arrC:ArrayCollection=new ArrayCollection();
    /*arrC[0]=1; //不允许这样访问
    arrC[1]='abc';
    arrC[2]=new Object();
    arrC[3]=new Array();
    */
    arrC.addItem(1);
    arrC.addItem('abc');
    arrC.addItem(new Object());
    arrC.addItem(new Array());
    arrC.addItem(['zhangsan',23]);
    
    var dic:Dictionary=new Dictionary();
    
    for(var k in arr){
     trace(k);     //输出到Console   k:0,1,2,3
     trace(": "+arr[k]);  //输出值
    }
    
    for(var k  in arrC){
     trace(k);    //k: 0,1,2,3
     trace(": "+arrC[k]); //输出值
    } 
    
    trace('  ******************');
    for each(var val in arr){     //输出值
     trace(val);
    }
    for each(var val in arrC){     //输出值
     trace(val);
    }
    
    //可以将键设置成任何一种数据类型
    dic[1]=2;
    dic["abc"]="abcd";
    var o=new Object();
    dic[o]=new Object();
    var o2=new Object();
    dic[02]=new Array('zhangsan');
    
    for(var v in dic){
     trace(v);  //1,abc
     trace(dic[v]); //2,abcd
    }
   }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值