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

[AS3]as3的Array数组的排序方法(sort 、sortOn )源代码

时间:2016-03-08 14:05酷播
对数组中的元素进行排序。Flash 根据 Unicode 值排序。(ASCII 是 Unicode 的一个子集。)
语法:function sort(... args):Array
对数组中的元素进行排序。Flash 根据 Unicode 值排序。(ASCII 是 Unicode 的一个子集。)

默认情况下,Array.sort() 按下面的列表中的说明进行排序:
排序区分大小写(Z 优先于 a)。
按升序排序(a 优先于 b)。
修改该数组以反映排序顺序;在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。
数值字段按字符串方式进行排序,因此 100 优先于 99,因为 "1" 的字符串值比 "9" 的低。
如果您想通过使用不同于默认设置的设置来对数组进行排序,可以使用 options 参数的条目中描述的排序选项之一,或者,也可以创建自己的自定义函数来进行排序。如果您创建自定义函数,则可以通过调用 sort() 方法来使用它,将您的自定义函数的名称用作第一个参数 (compareFunction)。

参数:
... args-- 一个用来确定数组中元素排序顺序的比较函数。给定元素 A 和 B,compareFunction 的结果可具有以下三个值之一:
-1,如果 A 应在排序后的序列中出现在 B 之前
0,如果 A 等于 B
1,如果 A 应在排序后的序列中出现在 B 之后
options:Number [可选] - 所定义常数的一个或多个数字或名称,相互之间由 |(按位"或")运算符隔开,它们将排序的默认行为更改为其它行为。options 参数可接受以下值:

Array.CASEINSENSITIVE 或 1
Array.DESCENDING 或 2
Array.UNIQUESORT 或 4
Array.RETURNINDEXEDARRAY 或 8
Array.NUMERIC 或 16
有关此参数的更多信息,请参见 Array.sortOn() 方法。

注意: Array.sort() 是在 ECMA-262 中定义的,但 Flash Player 7 中引入的数组排序选项是对 ECMA-262 规范的特定于 Flash 的扩展。

示例1:

  1. var vegetables:Array = new Array("spinach", 
  2.     "green pepper", 
  3.     "cilantro", 
  4.     "onion", 
  5.     "avocado"); 
  6. trace(vegetables); // spinach,green pepper,cilantro,onion,avocado 
  7. vegetables.sort(); 
  8. trace(vegetables); // avocado,cilantro,green pepper,onion,spinach 

示例2:

  1. var vegetables:Array = new Array("spinach", 
  2.     "green pepper", 
  3.     "Cilantro", 
  4.     "Onion", 
  5.     "Avocado"); 
  6. vegetables.sort(); 
  7. trace(vegetables); // Avocado,Cilantro,Onion,green pepper,spinach 
  8. vegetables.sort(Array.CASEINSENSITIVE); 
  9. trace(vegetables); // Avocado,Cilantro,green pepper,Onion,spinach 

示例3:

  1. var vegetables:Array = new Array(); 
  2. vegetables.push(new Vegetable("lettuce", 1.49)); 
  3. vegetables.push(new Vegetable("spinach", 1.89)); 
  4. vegetables.push(new Vegetable("asparagus", 3.99)); 
  5. vegetables.push(new Vegetable("celery", 1.29)); 
  6. vegetables.push(new Vegetable("squash", 1.44)); 
  7. trace(vegetables); 
  8. // lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44 
  9. vegetables.sort(); 
  10. trace(vegetables); 
  11. // asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44 
  12.   
  13. class Vegetable { 
  14.     private var name:String; 
  15.     private var price:Number; 
  16.     public function Vegetable(name:String, price:Number) { 
  17.         this.name = name; 
  18.         this.price = price; 
  19.     } 
  20.     public function toString():String { 
  21.         return " " + name + ":" + price; 
  22.     } 

 

热门文章推荐

请稍候...

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

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