·您当前的位置:首页 > 技术教程 >

[AS3]as3数组学习sort用法分析与介绍

时间:2013-03-11 16:16CuPlayer.com
sort() 按默认排序,注意:区分大小写,数字也是按字符串来处理

sort() 按默认排序,注意:区分大小写,数字也是按字符串来处理

  1. var arr:Array = ["b","c","a"];  
  2. trace(arr.sort());//得到a,b,c 
  3.  
  4. arr = ["210","1111","30"];  
  5. trace(arr.sort());//得到1111,210,30 
  6.  
  7. arr = ["b","X","A","c"];  
  8. trace(arr.sort());//得到A,X,b,c 
  9.  
  10. arr = ["b","C",235,"a",38,"X",8641];  
  11. trace(arr.sort());//得到235,38,8641,C,X,a,b 

sort(args) 按参数排序,一共有5种(注意:除了Array.RETURNINDEXEDARRAY,其它方式只要排序成功,都会实际改变数组)

1. sort(Array.CASEINSENSITIVE) 同sort(),不过不区分大小写,数字也是按字符串来处理

  1. var arr = ["b","X","A","c"];  
  2. arr.sort(Array.CASEINSENSITIVE);//得到"A","b","c","X" 

2. sort(Array.DESCENDING) 按字符串的倒序排列,区分大小写,数字也是按字符串来处理

  1. var arr:Array = ["b","C","a","X",235,8641,38];  
  2. trace(arr.sort(Array.DESCENDING));//得到b,a,X,C,8641,38,235 

3. sort(Array.UNIQUESORT) 同sort(),如果数组有相同元素,则放弃排序,返回0

  1. var arr:Array = ["b","C","a","X",235,8641,38,2365];  
  2. if(arr.sort(Array.UNIQUESORT)=="0")  
  3. {   
  4.     trace("有相同元素");  
  5. }  
  6. else  
  7. {   
  8.     trace("没有相同元素");  

4. sort(Array.RETURNINDEXEDARRAY) 同sort(),返回排序后的索引列表,原数组不变

  1. var arr:Array = ["b","C","a","X",235,8641,38,2365];  
  2. trace(arr.sort(Array.RETURNINDEXEDARRAY));//得到4,7,6,5,1,3,2,0  
  3. trace(arr);//得到b,C,a,X,235,8641,38,2365(原数组) 

5. sort(Array.NUMERIC) 按数字从小到大排序,如果数组里含有非数字,会抛出异常

  1. var arr:Array = [235,8641,38,2365];  
  2. trace(arr.sort(Array.NUMERIC));//得到38,235,2365,8641 

sort(函数名) 按自定义函数比较,该函数必须接受2个参数,返回值为1、-1、0

  1. public function Sample1008()  
  2. {  
  3.     var objA:Object = {price:200,quantity:2};  
  4.     var objB:Object = {price:400,quantity:4};  
  5.     var objC:Object = {price:100,quantity:1};  
  6.     var arr:Array = [objA,objB,objC];  
  7.     trace("原数组是:");  
  8.     for(var i:int=0;i<arr.length;i++)  
  9.     {  
  10.         trace(arr[i].price);  
  11.     }  
  12.     arr.sort(Compare);  
  13.     trace("排序后的数组是:");  
  14.     for(var j:int=0;j<arr.length;j++)  
  15.     {  
  16.         trace(arr[j].price);  
  17.     }  
  18. }  
  19. private function Compare(paraA:Object,paraB:Object):int  
  20. {  
  21.     var totalPriceA:int = paraA.price * paraA.quantity;  
  22.     var totalPriceB:int = paraB.price * paraB.quantity;  
  23.     if(totalPriceA>totalPriceB)  
  24.     {  
  25.         return 1;  
  26.     }  
  27.     else if(totalPriceA<totalPriceB)  
  28.     {  
  29.         return -1;  
  30.     }  
  31.     else  
  32.     {  
  33.         return 0;  
  34.     }  
  35. }  
  36. /*运行结果是  
  37. 原数组是:  
  38. 200  
  39. 400  
  40. 100  
  41. 排序后的数组是:  
  42. 100  
  43. 200  
  44. 400*/ 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器