- <?xml?version="1.0"?encoding="utf-8"?>??
- <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"??
- ????????????????layout="vertical"??
- ????????????????verticalAlign="middle"??
- ????????????????backgroundColor="white"??
- ????????????????initialize="onInit()">??
- ????<mx:Style>??
- ????????.greenModal?{??
- ????????????modalTransparencyColor:?haloGreen;??
- ????????}??
- ??
- ????????.redModal?{??
- ????????????modalTransparencyColor:?red;??
- ????</mx:Style>??
- ??
- ????<mx:Script>??
- ????????<!--[CDATA[??
- ????????????import?mx.controls.Alert;??
- ????????????import?mx.utils.StringUtil;??
- 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}];??
- private?var?newArray:Array=[{label:?"桌子",0); background-color:inherit">123.5},?{label:?"电脑",0); background-color:inherit">4741}];??
- private?var?arr0:Array=["AAAAA","DDDDD","YYYYY"];??
- private?function?onInit():void??
- ????????????{??
- ????????????????var?concatArray:Array=array.concat(newArray);??
- ????????????}??
- ??????????????
- private?function?concatArray(arr1:Array,arr2:Array):void??
- ????????????{??
- ????????????????var?arr:Array=arr1.concat(arr2);??
- ????????????????dataGrid.dataProvider=arr;??
- ??????????????
- ??????????????
- private?function?joinArray(): ????????????????textArea.text=arr0.join("??___/n");??
- ????????????????dataGrid.dataProvider=arr0;??
- ????????????}??
- ??????????????
- //Array.reverse??
- private?function?reverseArray(): ????????????????arr0.reverse();??
- ????????????????dataGrid.dataProvider=arr0;??
- ????????????????textArea.text=arr0.join("/n");??
- //Array.map??
- private?function?mapArray(): ????????????????var?upperArray:Array=arr0.map(toUpper);??
- ????????????????dataGrid.dataProvider=upperArray;??
- private?function?toUpper(element:*,?index:int,?arr:Array):String??
- ????????????????return?String(element).toLowerCase();??
- //for?each??
- private?function?forEachArray(): ????????????????array.forEach(forEach);??
- ????????????????dataGrid.dataProvider=array;??
- private?function?forEach(element:*,index: ????????????????element.data=element.data+10;??
- //some,当有一个条件满足时就返回结果true,和every相对应,every是全部满足返回true??
- private?function?someArray(): ????????????????textArea.text="";??
- ????????????????var?success:Boolean=array.some(isNumeric);??
- ????????????????if(success)??
- ????????????????{??
- ????????????????????Alert.show("Success.","Result",Alert.OK);??
- ????????????????}??
- else??
- ????????????????????Alert.show("failed.",0); background-color:inherit">//Array.every属性,与for?each不同,for?each会执行完第个元素,every则是当有一个不满足条件时就返回false结果??
- private?function?checkArray(arr:Array): ????????????????dataGrid.dataProvider=arr;??
- ??????????????????
- ????????????????var?success:Boolean=arr.every(isNumeric);??
- if?(success)??
- ????????????????{??
- ????????????????????Application.application.styleName="greenModal";??
- ????????????????????Alert.show("Array?is?numeric.",???
- ????????????????????????"SUCCESS",0); background-color:inherit">//?title??
- ????????????????????????Alert.OK,???
- ????????????????????????null,0); background-color:inherit">//?parent??
- ????????????????????????null);???
- ????????????????????Application.application.styleName="redModal";??
- ????????????????????Alert.show("Array?has?non-numeric?elements.",?"ERROR",?Alert.OK,?null);??
- ????????????????}??
- private?function?isNumeric(element:Object,?arr:Array):Boolean??
- if((element.hasOwnProperty("data"))?&&?(element.data?is?Number))??
- ????????????????????var?str:String=StringUtil.substitute("{0}?({1})/n",?element.label?,element.data);??
- ????????????????????textArea.text+=str;??
- ????????????????????return?true;??
- ????????????????}else?false;??
- ??????????????????
- ????????]]-->??
- ????</mx:Script>??
- ????<mx:ApplicationControlBar?dock="true">??
- ????????<mx:Button?label="Concat"??
- ???????????????????click="concatArray(array,newArray);"/>??
- ????????<mx:Button?label="Join"??
- ???????????????????click="joinArray();"/>??
- ????????<mx:Button?label="Reverse"??
- ???????????????????click="reverseArray();"/>??
- ????????<mx:Button?label="Map"??
- ???????????????????click="mapArray();"/>??
- ????????<mx:Button?label="ForEach"??
- ???????????????????click="forEachArray();"/>??
- ????????<mx:Button?label="Some"??
- ???????????????????click="someArray();"/>??
- ????????<mx:Button?label="Check?Array?1"??
- ???????????????????click="checkArray(array);"/>??
- ????????<mx:Button?label="Check?Array?2"??
- ???????????????????click="checkArray(newArray);"/>??
- ????</mx:ApplicationControlBar>??
- ????<mx:HBox>??
- ????????<mx:DataGrid?id="dataGrid"??
- ?????????????????????rowCount="7">??
- ????????????<mx:columns>??
- ????????????????<mx:DataGridColumn?dataField="label"/>??
- ????????????????<mx:DataGridColumn?dataField="data"/>??
- ????????????</mx:columns>??
- ????????</mx:DataGrid>??
- ????????<mx:TextArea?id="textArea"??
- ?????????????????????editable="false"??
- ?????????????????????width="{dataGrid.width}"??
- ?????????????????????height="{dataGrid.height}"/>??
- ????</mx:HBox>??
- </mx:Application>??
?
Filter :
????????????????creationComplete="init()">??
- private?var?keys:Object={};??
- /**?
- ?
- ?
- ?????????????*?which?will?be?used?as?a?data?provider?as?well?as?a?
- ?????????????*?filtered?view?of?that?array?which?does?not?contain?
- ?????????????*?duplicated?items.?
- ?????????????*/??
- private?function?init(): ?????????????????
- ?????????????????data.?*/??
- ????????????????var?arr:Array=[];??
- ????????????????arr.push({data:?1,?label:?"one"});??
- ????????????????arr.push({data:?"one"});??
- 2,?label:?"two"});??
- "two"});??
- 3,?label:?"three"});??
- "three"});??
- /*?Filter?the?original?array?and?call?the?
- ???????????????????removeDuplicates()?function?on?each?item?
- ?????????????????in?the?array.?*/??
- ????????????????var?filteredArr:Array=arr.filter(removedDuplicates);??
- ????????????????arrColl.source=arr;??
- ????????????????dedupedArrColl.source=filteredArr;??
- ?????????????*?This?method?is?used?to?filter?an?array?so?that?no?
- ?????????????*?duplicate?items?are?created.?It?works?by?first?
- ?????????????*?checking?to?see?if?a?keys?object?already?contains?
- ?????????????*?a?key?equal?to?the?current?value?of?the?item.data?
- ?????????????*?value.?If?the?key?already?exists,?the??current?item?
- ?????????????*?will?not?be?readded?to?the?data?provider.?If?the?key?
- ?????????????*?does?not?already?exist,?add?the?key?to?the?keys?
- ?????????????*?object?and?add?this?item?to?the?data?provider.?
- ?????????????*/??
- private?function?removedDuplicates(item:Object,?idx:uint,?arr:Array):Boolean??
- if?(keys.hasOwnProperty(item.label))??
- ?????????????????????
- ?????????????????????return?false?and?discard?this?item.?*/??
- ????????????????????else??
- /*?Else?the?keys?Object?does?*NOT*?already?have?
- ???????????????????????this?key,?so?add?this?item?to?the?new?data?
- ?????????????????????provider.?*/??
- ????????????????????keys[item.label]=item;??
- true;??
- ????<mx:ArrayCollection?id="arrColl"/>??
- ????<mx:ArrayCollection?id="dedupedArrColl"/>??
- ????????<mx:VBox>??
- ????????????<mx:Label?text="Original?({arrColl.length}?items):"/>??
- ????????????<mx:List?dataProvider="{arrColl}"/>??
- ????????</mx:VBox>??
- ????????????<mx:Label?text="Filtered?({dedupedArrColl.length}?items):"/>??
- ????????????<mx:List?dataProvider="{dedupedArrColl}"/>??
- ????</mx:HBox>??
- </mx:Application>??
?
搜索数组元素时,可以使用for语句配合break语句
for(var?i:int=0;i<array.length;i++)??
- {??
- ????if(array[i]==match)??
- ????{??
- ????????trace("Element?with?index?"+i+"found?to?match?"+match);??
- ????????break;??
- ????}??
- }??
但上面这种方法效率不高,在ascb.util.ArrayUtilities类中,提供了findMatchIndex,findLastMatchIndex和findMatchIndices三种方法来搜索数组元素。
使用方法如下,ArrayUtilities.findMatchIndex(数组对象,需要匹配的值,搜索开始下标,布尔值);
其中搜索开始下标默认为0。布尔值表示是否返回部分匹配元素,默认为false,即不返回部分匹配元素。
findLastMatchIndex返回最后一个匹配的元素下标。findMatchIndice返回所有匹配的元素下标数组(注意:返回的结果是下标的数组)。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|