[ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法
對數組中的元素進行排序。 此方法按 Unicode 值排序。 (ASCII 是 Unicode 的一個子集。)
默認情況下,Array.sort()按以下方式進行排序:
1. 排序區分大小寫(Z優先于a)。
2.?按升序排序(a優先于b)。
3.?修改該數組以反映排序順序;在排序后的數組中不按任何特定順序連續放置具有相同排序字段的多個元素。
4.?元素無論屬于何種數據類型,都作為字符串進行排序,所以 100 在 99 之前,這是因為 "1" 的字符串值小于 "9" 的字符串值。
如果要使用與默認設置不同的設置對數組進行排序,可以使用...args參數說明中sortOptions部分所描述的某種排序選項,也可以創建
自定義函數來進行排序。 如果創建自定義函數,請調用sort()方法,并將自定義函數的名稱作為第一個參數 (compareFunction)。
參數
?
...args— 指定一個比較函數和確定排序行為的一個或多個值的參數。
此方法使用語法和參數順序Array.sort(compareFunction, sortOptions),其參數定義如下:
*compareFunction- 一個用來確定數組元素排序順序的比較函數。 此參數是可選的。 比較函數應該用兩個參數進行比較。 給定元
素 A和 B,compareFunction的結果可以具有負值、0 或正值:
○ 若返回值為負,則表示 A 在排序后的序列中出現在 B 之前。
○ 若返回值為 0,則表示 A 和 B 具有相同的排序順序。
○ 若返回值為正,則表示 A 在排序后的序列中出現在 B 之后。
*sortOptions- 一個或多個數字或定義的常量,相互之間由|(按位 OR)運算符隔開,它們將排序的行為從默認行為更改為其它行
為。 此參數是可選的。 下面是sortOptions可接受的值:
○ 1 或Array.CASEINSENSITIVE
○ 2 或Array.DESCENDING
○ 4 或Array.UNIQUESORT
○ 8 或Array.RETURNINDEXEDARRAY
○ 16 或Array.NUMERIC
?
返回
Array— 返回值取決于您是否傳遞任何參數,如以下列表中所述:
??如果為...args參數的sortOptions變量指定值 4 或Array.UNIQUESORT,并且所排序的兩個或更多個元素具有相同的排序字
段,則Flash 返回值 0 并且不修改數組。
? 如果為...args參數的sortOptions變量指定值 8 或Array.RETURNINDEXEDARRAY,則 Flash 返回排序后的索引數值數組
以反映排序結果,并且不修改數組。
? 否則,Flash 不返回任何內容并修改該數組以反映排序順序。
?
下例是將sort()方法與自定義排序函數 (sortOnPrice) 一起使用,該函數按 price 排序,而不是按字母順序排序。 請注意,新函數
getPrice()將提取 price。
?
以下Main.as可作為文檔類測
1 package 2 { 3 import flash.display.Sprite; 4 5 /** 6 * ... 7 * @author FrostYen 8 */ 9 public class Main extends Sprite 10 { 11 var vegetables:Array = new Array ; 12 public function Main() 13 { 14 vegetables.push(new Vegetable("lettuce",1.49)); 15 vegetables.push(new Vegetable("spinach",1.89)); 16 vegetables.push(new Vegetable("asparagus",3.99)); 17 vegetables.push(new Vegetable("celery",1.29)); 18 vegetables.push(new Vegetable("squash",1.44)); 19 trace(vegetables); 20 // lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44 21 vegetables.sort(sortOnPrice); 22 trace(vegetables); 23 // celery:1.29, squash:1.44, lettuce:1.49, spinach:1.89, asparagus:3.99 24 } 25 26 private function sortOnPrice(a:Vegetable,b:Vegetable):Number 27 { 28 var aPrice:Number = a.getPrice(); 29 var bPrice:Number = b.getPrice(); 30 31 if ((aPrice > bPrice)) 32 { 33 return 1; 34 } 35 else if ((aPrice < bPrice)) 36 { 37 return -1; 38 } 39 else 40 { 41 //aPrice == bPrice 42 return 0; 43 } 44 } 45 } 46 47 } 48 class Vegetable; 49 { 50 private var name:String; 51 private var price:Number; 52 53 public function Vegetable(name:String,price:Number) 54 { 55 this.name = name; 56 this.price = price; 57 } 58 59 public function getPrice():Number 60 { 61 return price; 62 } 63 64 public function toString():String 65 { 66 return " " + name + ":" + price; 67 } 68 }?
轉載于:https://www.cnblogs.com/frost-yen/p/4519520.html
總結
以上是生活随笔為你收集整理的[ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用管道符在PowerShell中进行各
- 下一篇: 如何在eclipse中修改jsp默认编码