- <?xmlversion="1.0"encoding="utf-8"?>
- <mx:Applicationxmlns: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[
- importmx.controls.Alert;
- importmx.utils.StringUtil;
- privatevararray:Array=[{label:"AAAAA",data:5},{label:"BBBBB",data:"liu"},{label:"CCCCC",data:3},{label:"DDDDD",data:2},{label:"EEEEE",data:1}];
- privatevarnewArray:Array=[{label:"桌子",data:123.5},{label:"电脑",data:4741}];
- privatevararr0:Array=["AAAAA","DDDDD","YYYYY"];
- privatefunctiononInit():void
- {
- varconcatArray:Array=array.concat(newArray);
- }
- //Array.concat属性
- privatefunctionconcatArray(arr1:Array,arr2:Array):void
- {
- vararr:Array=arr1.concat(arr2);
- dataGrid.dataProvider=arr;
- }
- //Array.join属性
- privatefunctionjoinArray():void
- {
- textArea.text=arr0.join("___/n");
- dataGrid.dataProvider=arr0;
- }
- //Array.reverse
- privatefunctionreverseArray():void
- {
- arr0.reverse();
- dataGrid.dataProvider=arr0;
- textArea.text=arr0.join("/n");
- }
- //Array.map
- privatefunctionmapArray():void
- {
- varupperArray:Array=arr0.map(toUpper);
- dataGrid.dataProvider=upperArray;
- }
- privatefunctiontoUpper(element:*,index:int,arr:Array):String
- {
- returnString(element).toLowerCase();
- }
- //foreach
- privatefunctionforEachArray():void
- {
- array.forEach(forEach);
- dataGrid.dataProvider=array;
- }
- privatefunctionforEach(element:*,index:int,arr:Array):void
- {
- element.data=element.data+10;
- }
- //some,当有一个条件满足时就返回结果true,和every相对应,every是全部满足返回true
- privatefunctionsomeArray():void
- {
- textArea.text="";
- varsuccess:Boolean=array.some(isNumeric);
- dataGrid.dataProvider=array;
- if(success)
- {
- Alert.show("Success.","Result",Alert.OK);
- }
- else
- {
- Alert.show("failed.","Result",Alert.OK);
- }
- }
- //Array.every属性,与foreach不同,foreach会执行完第个元素,every则是当有一个不满足条件时就返回false结果
- privatefunctioncheckArray(arr:Array):void
- {
- textArea.text="";
- dataGrid.dataProvider=arr;
- //验证数组的全部元素属性是否满足条件
- varsuccess:Boolean=arr.every(isNumeric);
- if(success)
- {
- Application.application.styleName="greenModal";
- Alert.show("Arrayisnumeric.",//text
- "SUCCESS",//title
- Alert.OK,//flags
- null,//parent
- null);//closeHandler
- }
- else
- {
- Application.application.styleName="redModal";
- Alert.show("Arrayhasnon-numericelements.","ERROR",Alert.OK,null,null);
- }
- }
- privatefunctionisNumeric(element:Object,index:int,arr:Array):Boolean
- {
- if((element.hasOwnProperty("data"))&&(element.dataisNumber))
- {
- varstr:String=StringUtil.substitute("{0}({1})/n",element.label,element.data);
- textArea.text+=str;
- returntrue;
- }elsereturnfalse;
- }
- ]]-->
- </mx:Script>
- <mx:ApplicationControlBardock="true">
- <mx:Buttonlabel="Concat"
- click="concatArray(array,newArray);"/>
- <mx:Buttonlabel="Join"
- click="joinArray();"/>
- <mx:Buttonlabel="Reverse"
- click="reverseArray();"/>
- <mx:Buttonlabel="Map"
- click="mapArray();"/>
- <mx:Buttonlabel="ForEach"
- click="forEachArray();"/>
- <mx:Buttonlabel="Some"
- click="someArray();"/>
- <mx:Buttonlabel="CheckArray1"
- click="checkArray(array);"/>
- <mx:Buttonlabel="CheckArray2"
- click="checkArray(newArray);"/>
- </mx:ApplicationControlBar>
- <mx:HBox>
- <mx:DataGridid="dataGrid"
- rowCount="7">
- <mx:columns>
- <mx:DataGridColumndataField="label"/>
- <mx:DataGridColumndataField="data"/>
- </mx:columns>
- </mx:DataGrid>
- <mx:TextAreaid="textArea"
- editable="false"
- width="{dataGrid.width}"
- height="{dataGrid.height}"/>
- </mx:HBox>
- </mx:Application>
Filter :
- <?xmlversion="1.0"encoding="utf-8"?>
- <mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white"
- creationComplete="init()">
- <mx:Script>
- <!--[CDATA[
- privatevarkeys:Object={};
- /**
- *CalledbytheApplicationcontainer'screationComplete
- *eventhandler.ThismethodcreatesanewArrayobject
- *whichwillbeusedasadataprovideraswellasa
- *filteredviewofthatarraywhichdoesnotcontain
- *duplicateditems.
- */
- privatefunctioninit():void
- {
- /*Createadummydatasourcewithsomesemi-random
- data.*/
- vararr:Array=[];
- arr.push({data:1,label:"one"});
- arr.push({data:1,label:"one"});
- arr.push({data:1,label:"one"});
- arr.push({data:1,label:"one"});
- arr.push({data:2,label:"two"});
- arr.push({data:2,label:"two"});
- arr.push({data:2,label:"two"});
- arr.push({data:1,label:"one"});
- arr.push({data:3,label:"three"});
- arr.push({data:3,label:"three"});
- /*Filtertheoriginalarrayandcallthe
- removeDuplicates()functiononeachitem
- inthearray.*/
- varfilteredArr:Array=arr.filter(removedDuplicates);
- arrColl.source=arr;
- dedupedArrColl.source=filteredArr;
- }
- /**
- *Thismethodisusedtofilteranarraysothatno
- *duplicateitemsarecreated.Itworksbyfirst
- *checkingtoseeifakeysobjectalreadycontains
- *akeyequaltothecurrentvalueoftheitem.data
- *value.Ifthekeyalreadyexists,thecurrentitem
- *willnotbereaddedtothedataprovider.Ifthekey
- *doesnotalreadyexist,addthekeytothekeys
- *objectandaddthisitemtothedataprovider.
- */
- privatefunctionremovedDuplicates(item:Object,idx:uint,arr:Array):Boolean
- {
- if(keys.hasOwnProperty(item.label))
- {
- /*IfthekeysObjectalreadyhasthisproperty,
- returnfalseanddiscardthisitem.*/
- returnfalse;
- }
- else
- {
- /*ElsethekeysObjectdoes*NOT*alreadyhave
- thiskey,soaddthisitemtothenewdata
- provider.*/
- keys[item.label]=item;
- returntrue;
- }
- }
- ]]-->
- </mx:Script>
- <mx:ArrayCollectionid="arrColl"/>
- <mx:ArrayCollectionid="dedupedArrColl"/>
- <mx:HBox>
- <mx:VBox>
- <mx:Labeltext="Original({arrColl.length}items):"/>
- <mx:ListdataProvider="{arrColl}"/>
- </mx:VBox>
- <mx:VBox>
- <mx:Labeltext="Filtered({dedupedArrColl.length}items):"/>
- <mx:ListdataProvider="{dedupedArrColl}"/>
- </mx:VBox>
- </mx:HBox>
- </mx:Application>
搜索数组元素时,可以使用for语句配合break语句
- for(vari:int=0;i<array.length;i++)
- {
- if(array[i]==match)
- {
- trace("Elementwithindex"+i+"foundtomatch"+match);
- break;
- }
- }
但上面这种方法效率不高,在ascb.util.ArrayUtilities类中,提供了findMatchIndex,findLastMatchIndex和findMatchIndices三种方法来搜索数组元素。
使用方法如下,ArrayUtilities.findMatchIndex(数组对象,需要匹配的值,搜索开始下标,布尔值);
其中搜索开始下标默认为0。布尔值表示是否返回部分匹配元素,默认为false,即不返回部分匹配元素。
findLastMatchIndex返回最后一个匹配的元素下标。findMatchIndice返回所有匹配的元素下标数组(注意:返回的结果是下标的数组)。
- <?xmlversion="1.0"encoding="utf-8"?>
- <mx:Applicationxmlns: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[
- importmx.controls.Alert;
- importmx.utils.StringUtil;
- privatevararray:Array=[{label:"AAAAA",data:5},{label:"BBBBB",data:"liu"},{label:"CCCCC",data:3},{label:"DDDDD",data:2},{label:"EEEEE",data:1}];
- privatevarnewArray:Array=[{label:"桌子",data:123.5},{label:"电脑",data:4741}];
- privatevararr0:Array=["AAAAA","DDDDD","YYYYY"];
- privatefunctiononInit():void
- {
- varconcatArray:Array=array.concat(newArray);
- }
- //Array.concat属性
- privatefunctionconcatArray(arr1:Array,arr2:Array):void
- {
- vararr:Array=arr1.concat(arr2);
- dataGrid.dataProvider=arr;
- }
- //Array.join属性
- privatefunctionjoinArray():void
- {
- textArea.text=arr0.join("___/n");
- dataGrid.dataProvider=arr0;
- }
- //Array.reverse
- privatefunctionreverseArray():void
- {
- arr0.reverse();
- dataGrid.dataProvider=arr0;
- textArea.text=arr0.join("/n");
- }
- //Array.map
- privatefunctionmapArray():void
- {
- varupperArray:Array=arr0.map(toUpper);
- dataGrid.dataProvider=upperArray;
- }
- privatefunctiontoUpper(element:*,index:int,arr:Array):String
- {
- returnString(element).toLowerCase();
- }
- //foreach
- privatefunctionforEachArray():void
- {
- array.forEach(forEach);
- dataGrid.dataProvider=array;
- }
- privatefunctionforEach(element:*,index:int,arr:Array):void
- {
- element.data=element.data+10;
- }
- //some,当有一个条件满足时就返回结果true,和every相对应,every是全部满足返回true
- privatefunctionsomeArray():void
- {
- textArea.text="";
- varsuccess:Boolean=array.some(isNumeric);
- dataGrid.dataProvider=array;
- if(success)
- {
- Alert.show("Success.","Result",Alert.OK);
- }
- else
- {
- Alert.show("failed.","Result",Alert.OK);
- }
- }
- //Array.every属性,与foreach不同,foreach会执行完第个元素,every则是当有一个不满足条件时就返回false结果
- privatefunctioncheckArray(arr:Array):void
- {
- textArea.text="";
- dataGrid.dataProvider=arr;
- //验证数组的全部元素属性是否满足条件
- varsuccess:Boolean=arr.every(isNumeric);
- if(success)
- {
- Application.application.styleName="greenModal";
- Alert.show("Arrayisnumeric.",//text
- "SUCCESS",//title
- Alert.OK,//flags
- null,//parent
- null);//closeHandler
- }
- else
- {
- Application.application.styleName="redModal";
- Alert.show("Arrayhasnon-numericelements.","ERROR",Alert.OK,null,null);
- }
- }
- privatefunctionisNumeric(element:Object,index:int,arr:Array):Boolean
- {
- if((element.hasOwnProperty("data"))&&(element.dataisNumber))
- {
- varstr:String=StringUtil.substitute("{0}({1})/n",element.label,element.data);
- textArea.text+=str;
- returntrue;
- }elsereturnfalse;
- }
- ]]-->
- </mx:Script>
- <mx:ApplicationControlBardock="true">
- <mx:Buttonlabel="Concat"
- click="concatArray(array,newArray);"/>
- <mx:Buttonlabel="Join"
- click="joinArray();"/>
- <mx:Buttonlabel="Reverse"
- click="reverseArray();"/>
- <mx:Buttonlabel="Map"
- click="mapArray();"/>
- <mx:Buttonlabel="ForEach"
- click="forEachArray();"/>
- <mx:Buttonlabel="Some"
- click="someArray();"/>
- <mx:Buttonlabel="CheckArray1"
- click="checkArray(array);"/>
- <mx:Buttonlabel="CheckArray2"
- click="checkArray(newArray);"/>
- </mx:ApplicationControlBar>
- <mx:HBox>
- <mx:DataGridid="dataGrid"
- rowCount="7">
- <mx:columns>
- <mx:DataGridColumndataField="label"/>
- <mx:DataGridColumndataField="data"/>
- </mx:columns>
- </mx:DataGrid>
- <mx:TextAreaid="textArea"
- editable="false"
- width="{dataGrid.width}"
- height="{dataGrid.height}"/>
- </mx:HBox>
- </mx:Application>
Filter :
- <?xmlversion="1.0"encoding="utf-8"?>
- <mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white"
- creationComplete="init()">
- <mx:Script>
- <!--[CDATA[
- privatevarkeys:Object={};
- /**
- *CalledbytheApplicationcontainer'screationComplete
- *eventhandler.ThismethodcreatesanewArrayobject
- *whichwillbeusedasadataprovideraswellasa
- *filteredviewofthatarraywhichdoesnotcontain
- *duplicateditems.
- */
- privatefunctioninit():void
- {
- /*Createadummydatasourcewithsomesemi-random
- data.*/
- vararr:Array=[];
- arr.push({data:1,label:"one"});
- arr.push({data:1,label:"one"});
- arr.push({data:1,label:"one"});
- arr.push({data:1,label:"one"});
- arr.push({data:2,label:"two"});
- arr.push({data:2,label:"two"});
- arr.push({data:2,label:"two"});
- arr.push({data:1,label:"one"});
- arr.push({data:3,label:"three"});
- arr.push({data:3,label:"three"});
- /*Filtertheoriginalarrayandcallthe
- removeDuplicates()functiononeachitem
- inthearray.*/
- varfilteredArr:Array=arr.filter(removedDuplicates);
- arrColl.source=arr;
- dedupedArrColl.source=filteredArr;
- }
- /**
- *Thismethodisusedtofilteranarraysothatno
- *duplicateitemsarecreated.Itworksbyfirst
- *checkingtoseeifakeysobjectalreadycontains
- *akeyequaltothecurrentvalueoftheitem.data
- *value.Ifthekeyalreadyexists,thecurrentitem
- *willnotbereaddedtothedataprovider.Ifthekey
- *doesnotalreadyexist,addthekeytothekeys
- *objectandaddthisitemtothedataprovider.
- */
- privatefunctionremovedDuplicates(item:Object,idx:uint,arr:Array):Boolean
- {
- if(keys.hasOwnProperty(item.label))
- {
- /*IfthekeysObjectalreadyhasthisproperty,
- returnfalseanddiscardthisitem.*/
- returnfalse;
- }
- else
- {
- /*ElsethekeysObjectdoes*NOT*alreadyhave
- thiskey,soaddthisitemtothenewdata
- provider.*/
- keys[item.label]=item;
- returntrue;
- }
- }
- ]]-->
- </mx:Script>
- <mx:ArrayCollectionid="arrColl"/>
- <mx:ArrayCollectionid="dedupedArrColl"/>
- <mx:HBox>
- <mx:VBox>
- <mx:Labeltext="Original({arrColl.length}items):"/>
- <mx:ListdataProvider="{arrColl}"/>
- </mx:VBox>
- <mx:VBox>
- <mx:Labeltext="Filtered({dedupedArrColl.length}items):"/>
- <mx:ListdataProvider="{dedupedArrColl}"/>
- </mx:VBox>
- </mx:HBox>
- </mx:Application>
搜索数组元素时,可以使用for语句配合break语句
- for(vari:int=0;i<array.length;i++)
- {
- if(array[i]==match)
- {
- trace("Elementwithindex"+i+"foundtomatch"+match);
- break;
- }
- }
但上面这种方法效率不高,在ascb.util.ArrayUtilities类中,提供了findMatchIndex,findLastMatchIndex和findMatchIndices三种方法来搜索数组元素。
使用方法如下,ArrayUtilities.findMatchIndex(数组对象,需要匹配的值,搜索开始下标,布尔值);
其中搜索开始下标默认为0。布尔值表示是否返回部分匹配元素,默认为false,即不返回部分匹配元素。
findLastMatchIndex返回最后一个匹配的元素下标。findMatchIndice返回所有匹配的元素下标数组(注意:返回的结果是下标的数组)。