加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 数组(Array)属性使用及数组的遍历

发布时间:2020-12-15 04:59:16 所属栏目:百科 来源:网络整理
导读:[java] ? view plain copy ?xml?version= "1.0" ?encoding= "utf-8" ??? mx:Application?xmlns:mx= "http://www.adobe.com/2006/mxml" ?? ????????????????layout= "vertical" ?? ????????????????verticalAlign= "middle" ?? ????????????????backgroundCol

[java]? view plain copy
  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"??
  3. ????????????????layout="vertical"??
  4. ????????????????verticalAlign="middle"??
  5. ????????????????backgroundColor="white"??
  6. ????????????????initialize="onInit()">??
  7. ????<mx:Style>??
  8. ????????.greenModal?{??
  9. ????????????modalTransparencyColor:?haloGreen;??
  10. ????????}??
  11. ??
  12. ????????.redModal?{??
  13. ????????????modalTransparencyColor:?red;??
  14. ????</mx:Style>??
  15. ??
  16. ????<mx:Script>??
  17. ????????<!--[CDATA[??
  18. ????????????import?mx.controls.Alert;??
  19. ????????????import?mx.utils.StringUtil;??
  20. private?var?array:Array=[{label:?"AAAAA",?data:?5},?{label:?"BBBBB",?data:?"liu"},?{label:?"CCCCC",0); background-color:inherit">3},?{label:?"DDDDD",0); background-color:inherit">2},?{label:?"EEEEE",0); background-color:inherit">1}];??
  21. private?var?newArray:Array=[{label:?"桌子",0); background-color:inherit">123.5},?{label:?"电脑",0); background-color:inherit">4741}];??
  22. private?var?arr0:Array=["AAAAA","DDDDD","YYYYY"];??
  23. private?function?onInit():void??
  24. ????????????{??
  25. ????????????????var?concatArray:Array=array.concat(newArray);??
  26. ????????????}??
  27. ????????????//Array.concat属性??
  28. private?function?concatArray(arr1:Array,arr2:Array):void??
  29. ????????????{??
  30. ????????????????var?arr:Array=arr1.concat(arr2);??
  31. ????????????????dataGrid.dataProvider=arr;??
  32. ??????????????
  33. ????????????//Array.join属性??
  34. private?function?joinArray(): ????????????????textArea.text=arr0.join("??___/n");??
  35. ????????????????dataGrid.dataProvider=arr0;??
  36. ????????????}??
  37. ??????????????
  38. //Array.reverse??
  39. private?function?reverseArray(): ????????????????arr0.reverse();??
  40. ????????????????dataGrid.dataProvider=arr0;??
  41. ????????????????textArea.text=arr0.join("/n");??
  42. //Array.map??
  43. private?function?mapArray(): ????????????????var?upperArray:Array=arr0.map(toUpper);??
  44. ????????????????dataGrid.dataProvider=upperArray;??
  45. private?function?toUpper(element:*,?index:int,?arr:Array):String??
  46. ????????????????return?String(element).toLowerCase();??
  47. //for?each??
  48. private?function?forEachArray(): ????????????????array.forEach(forEach);??
  49. ????????????????dataGrid.dataProvider=array;??
  50. private?function?forEach(element:*,index: ????????????????element.data=element.data+10;??
  51. //some,当有一个条件满足时就返回结果true,和every相对应,every是全部满足返回true??
  52. private?function?someArray(): ????????????????textArea.text="";??
  53. ????????????????var?success:Boolean=array.some(isNumeric);??
  54. ????????????????if(success)??
  55. ????????????????{??
  56. ????????????????????Alert.show("Success.","Result",Alert.OK);??
  57. ????????????????}??
  58. else??
  59. ????????????????????Alert.show("failed.",0); background-color:inherit">//Array.every属性,与for?each不同,for?each会执行完第个元素,every则是当有一个不满足条件时就返回false结果??
  60. private?function?checkArray(arr:Array): ????????????????dataGrid.dataProvider=arr;??
  61. ????????????????//验证数组的全部元素属性是否满足条件??
  62. ????????????????var?success:Boolean=arr.every(isNumeric);??
  63. if?(success)??
  64. ????????????????{??
  65. ????????????????????Application.application.styleName="greenModal";??
  66. ????????????????????Alert.show("Array?is?numeric.",?//?text??
  67. ????????????????????????"SUCCESS",0); background-color:inherit">//?title??
  68. ????????????????????????Alert.OK,?//?flags??
  69. ????????????????????????null,0); background-color:inherit">//?parent??
  70. ????????????????????????null);?//?closeHandler??
  71. ????????????????????Application.application.styleName="redModal";??
  72. ????????????????????Alert.show("Array?has?non-numeric?elements.",?"ERROR",?Alert.OK,?null);??
  73. ????????????????}??
  74. private?function?isNumeric(element:Object,?arr:Array):Boolean??
  75. if((element.hasOwnProperty("data"))?&&?(element.data?is?Number))??
  76. ????????????????????var?str:String=StringUtil.substitute("{0}?({1})/n",?element.label?,element.data);??
  77. ????????????????????textArea.text+=str;??
  78. ????????????????????return?true;??
  79. ????????????????}else?false;??
  80. ??????????????????
  81. ????????]]-->??
  82. ????</mx:Script>??
  83. ????<mx:ApplicationControlBar?dock="true">??
  84. ????????<mx:Button?label="Concat"??
  85. ???????????????????click="concatArray(array,newArray);"/>??
  86. ????????<mx:Button?label="Join"??
  87. ???????????????????click="joinArray();"/>??
  88. ????????<mx:Button?label="Reverse"??
  89. ???????????????????click="reverseArray();"/>??
  90. ????????<mx:Button?label="Map"??
  91. ???????????????????click="mapArray();"/>??
  92. ????????<mx:Button?label="ForEach"??
  93. ???????????????????click="forEachArray();"/>??
  94. ????????<mx:Button?label="Some"??
  95. ???????????????????click="someArray();"/>??
  96. ????????<mx:Button?label="Check?Array?1"??
  97. ???????????????????click="checkArray(array);"/>??
  98. ????????<mx:Button?label="Check?Array?2"??
  99. ???????????????????click="checkArray(newArray);"/>??
  100. ????</mx:ApplicationControlBar>??
  101. ????<mx:HBox>??
  102. ????????<mx:DataGrid?id="dataGrid"??
  103. ?????????????????????rowCount="7">??
  104. ????????????<mx:columns>??
  105. ????????????????<mx:DataGridColumn?dataField="label"/>??
  106. ????????????????<mx:DataGridColumn?dataField="data"/>??
  107. ????????????</mx:columns>??
  108. ????????</mx:DataGrid>??
  109. ????????<mx:TextArea?id="textArea"??
  110. ?????????????????????editable="false"??
  111. ?????????????????????width="{dataGrid.width}"??
  112. ?????????????????????height="{dataGrid.height}"/>??
  113. ????</mx:HBox>??
  114. </mx:Application>??

?

Filter :

copy
    ????????????????creationComplete="init()">??
  1. private?var?keys:Object={};??
  2. /**?
  3. ?????????????*?Called?by?the?Application?container's?creationComplete?
  4. ?????????????*?event?handler.?This?method?creates?a?new?Array?object?
  5. ?????????????*?which?will?be?used?as?a?data?provider?as?well?as?a?
  6. ?????????????*?filtered?view?of?that?array?which?does?not?contain?
  7. ?????????????*?duplicated?items.?
  8. ?????????????*/??
  9. private?function?init(): ????????????????/*?Create?a?dummy?data?source?with?some?semi-random?
  10. ?????????????????data.?*/??
  11. ????????????????var?arr:Array=[];??
  12. ????????????????arr.push({data:?1,?label:?"one"});??
  13. ????????????????arr.push({data:?"one"});??
  14. 2,?label:?"two"});??
  15. "two"});??
  16. 3,?label:?"three"});??
  17. "three"});??
  18. /*?Filter?the?original?array?and?call?the?
  19. ???????????????????removeDuplicates()?function?on?each?item?
  20. ?????????????????in?the?array.?*/??
  21. ????????????????var?filteredArr:Array=arr.filter(removedDuplicates);??
  22. ????????????????arrColl.source=arr;??
  23. ????????????????dedupedArrColl.source=filteredArr;??
  24. ?????????????*?This?method?is?used?to?filter?an?array?so?that?no?
  25. ?????????????*?duplicate?items?are?created.?It?works?by?first?
  26. ?????????????*?checking?to?see?if?a?keys?object?already?contains?
  27. ?????????????*?a?key?equal?to?the?current?value?of?the?item.data?
  28. ?????????????*?value.?If?the?key?already?exists,?the??current?item?
  29. ?????????????*?will?not?be?readded?to?the?data?provider.?If?the?key?
  30. ?????????????*?does?not?already?exist,?add?the?key?to?the?keys?
  31. ?????????????*?object?and?add?this?item?to?the?data?provider.?
  32. ?????????????*/??
  33. private?function?removedDuplicates(item:Object,?idx:uint,?arr:Array):Boolean??
  34. if?(keys.hasOwnProperty(item.label))??
  35. ????????????????????/*?If?the?keys?Object?already?has?this?property,?
  36. ?????????????????????return?false?and?discard?this?item.?*/??
  37. ????????????????????else??
  38. /*?Else?the?keys?Object?does?*NOT*?already?have?
  39. ???????????????????????this?key,?so?add?this?item?to?the?new?data?
  40. ?????????????????????provider.?*/??
  41. ????????????????????keys[item.label]=item;??
  42. true;??
  43. ????<mx:ArrayCollection?id="arrColl"/>??
  44. ????<mx:ArrayCollection?id="dedupedArrColl"/>??
  45. ????????<mx:VBox>??
  46. ????????????<mx:Label?text="Original?({arrColl.length}?items):"/>??
  47. ????????????<mx:List?dataProvider="{arrColl}"/>??
  48. ????????</mx:VBox>??
  49. ????????????<mx:Label?text="Filtered?({dedupedArrColl.length}?items):"/>??
  50. ????????????<mx:List?dataProvider="{dedupedArrColl}"/>??
  51. ????</mx:HBox>??
  52. </mx:Application>??

?

搜索数组元素时,可以使用for语句配合break语句

copy
    for(var?i:int=0;i<array.length;i++)??
  1. {??
  2. ????if(array[i]==match)??
  3. ????{??
  4. ????????trace("Element?with?index?"+i+"found?to?match?"+match);??
  5. ????????break;??
  6. ????}??
  7. }??

但上面这种方法效率不高,在ascb.util.ArrayUtilities类中,提供了findMatchIndex,findLastMatchIndex和findMatchIndices三种方法来搜索数组元素。

使用方法如下,ArrayUtilities.findMatchIndex(数组对象,需要匹配的值,搜索开始下标,布尔值);

其中搜索开始下标默认为0。布尔值表示是否返回部分匹配元素,默认为false,即不返回部分匹配元素。

findLastMatchIndex返回最后一个匹配的元素下标。findMatchIndice返回所有匹配的元素下标数组(注意:返回的结果是下标的数组)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读