[ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法
對(duì)數(shù)組中的元素進(jìn)行排序。 此方法按 Unicode 值排序。 (ASCII 是 Unicode 的一個(gè)子集。)
默認(rèn)情況下,Array.sort()按以下方式進(jìn)行排序:
1. 排序區(qū)分大小寫(Z優(yōu)先于a)。
2.?按升序排序(a優(yōu)先于b)。
3.?修改該數(shù)組以反映排序順序;在排序后的數(shù)組中不按任何特定順序連續(xù)放置具有相同排序字段的多個(gè)元素。
4.?元素?zé)o論屬于何種數(shù)據(jù)類型,都作為字符串進(jìn)行排序,所以 100 在 99 之前,這是因?yàn)?"1" 的字符串值小于 "9" 的字符串值。
如果要使用與默認(rèn)設(shè)置不同的設(shè)置對(duì)數(shù)組進(jìn)行排序,可以使用...args參數(shù)說明中sortOptions部分所描述的某種排序選項(xiàng),也可以創(chuàng)建
自定義函數(shù)來進(jìn)行排序。 如果創(chuàng)建自定義函數(shù),請調(diào)用sort()方法,并將自定義函數(shù)的名稱作為第一個(gè)參數(shù) (compareFunction)。
參數(shù)
?
...args— 指定一個(gè)比較函數(shù)和確定排序行為的一個(gè)或多個(gè)值的參數(shù)。
此方法使用語法和參數(shù)順序Array.sort(compareFunction, sortOptions),其參數(shù)定義如下:
*compareFunction- 一個(gè)用來確定數(shù)組元素排序順序的比較函數(shù)。 此參數(shù)是可選的。 比較函數(shù)應(yīng)該用兩個(gè)參數(shù)進(jìn)行比較。 給定元
素 A和 B,compareFunction的結(jié)果可以具有負(fù)值、0 或正值:
○ 若返回值為負(fù),則表示 A 在排序后的序列中出現(xiàn)在 B 之前。
○ 若返回值為 0,則表示 A 和 B 具有相同的排序順序。
○ 若返回值為正,則表示 A 在排序后的序列中出現(xiàn)在 B 之后。
*sortOptions- 一個(gè)或多個(gè)數(shù)字或定義的常量,相互之間由|(按位 OR)運(yùn)算符隔開,它們將排序的行為從默認(rèn)行為更改為其它行
為。 此參數(shù)是可選的。 下面是sortOptions可接受的值:
○ 1 或Array.CASEINSENSITIVE
○ 2 或Array.DESCENDING
○ 4 或Array.UNIQUESORT
○ 8 或Array.RETURNINDEXEDARRAY
○ 16 或Array.NUMERIC
?
返回
Array— 返回值取決于您是否傳遞任何參數(shù),如以下列表中所述:
??如果為...args參數(shù)的sortOptions變量指定值 4 或Array.UNIQUESORT,并且所排序的兩個(gè)或更多個(gè)元素具有相同的排序字
段,則Flash 返回值 0 并且不修改數(shù)組。
? 如果為...args參數(shù)的sortOptions變量指定值 8 或Array.RETURNINDEXEDARRAY,則 Flash 返回排序后的索引數(shù)值數(shù)組
以反映排序結(jié)果,并且不修改數(shù)組。
? 否則,Flash 不返回任何內(nèi)容并修改該數(shù)組以反映排序順序。
?
下例是將sort()方法與自定義排序函數(shù) (sortOnPrice) 一起使用,該函數(shù)按 price 排序,而不是按字母順序排序。 請注意,新函數(shù)
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 }?
轉(zhuǎn)載于:https://www.cnblogs.com/frost-yen/p/4519520.html
總結(jié)
以上是生活随笔為你收集整理的[ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用管道符在PowerShell中进行各
- 下一篇: 如何在eclipse中修改jsp默认编码