for(..in..)的用途是对一个对象中所有的属性名称(注意是属性名称或索引编号,而不是属性值)进行逐个访问或者对数组中的每一个下标进行逐个访问。
for each(..in..)结构的用途是对一个对象中的所有属性值(此处是属性值而不是属性名称)或者对数组中的每一个元素值,而不是属性名称(或索引、主键)进行逐个访问。此集合可以是 XML 对象、一般对象或数组。
下面先看一下简单用例:
1 var myArray:Array = [{"one","two","three"]; 2 for (var i:Object in myArray) 3 { 4 trace(myArray[i]); 5 } 6 //output 7 //one 8 //two 9 //three 10 for each (var j:Object in myArray) 11 { 12 trace(j); 13 } 14 //output 15 //one 16 //two 17 //three
for in 得到的是相当于hash表里的key值....for each in 得到的是 value值
关于遍历显示对象的问题:
使用for each...in 或者 for...in只能遍历到有实例名的对象。(此处原因不明。所以用的时候还需要多加注意)
关于遍历XML对象的用法:
xml非常常用很多用法经常会忘掉了。之后会专门详细介绍和xml的使用也借此巩固自己的知识。
1 var myXML:XML = 2 <order> 3 <item id='1' quantity='2'> 4 <menuName>burger</menuName> 5 <price>3.95</price> 6 </item> 7 <item id='2' quantity='2'> 8 <menuName>fries</menuName> 9 <price>1.45</price> 10 </item> 11 </order>; 12 13 var total:Number = 0; 14 for (var pname:String in myXML.item) 15 { 16 total += myXML.item.@quantity[pname] * myXML.item.price[pname]; 17 } 18 trace(total); 19 var total2:Number = 0; 20 for each (var prop:XML in myXML.item) 21 { 22 total2 += prop.@quantity * prop.price; 23 } 24 trace(total2); 25 //outout 26 //10.8 27 //10.8
很多API只需要看一遍帮助文档。用过几次便可牢记。所以尽量去尝试多敲代码。多多使用一些不常用的API这样知识才会全面。代码才会写的得心应手!