Flash / Flex / ActionScript/Array/sortOn
sortOn( ) supports sort modifiers
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var cars:Array = new Array( ); cars.push({make: "H", year: 1997, color: "maroon"}); cars.push({make: "Chrysler", year: 2000, color: "beige"}); cars.push({make: "Mercedes", year: 1985, color: "blue"}); cars.push({make: "Fiat", year: 1983, color: "gray"}); cars.sortOn("year", Array.DESCENDING); for (var i:int = 0; i < cars.length; i++) { trace(cars[i].color + "\t" + cars[i].year + "\t" + cars[i].make); } } }
}
</source>
There are five such optional flags that you can pass to either sort() or sortOn():
<source lang="java">
CASEINSENSITIVE DESCENDING NUMERIC RETURNINDEXEDARRAY UNIQUESORT
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var bookshelf:Array = new Array(3); bookshelf[0] = new Book("A","a",1999); bookshelf[1] = new Book("B","b",2000); bookshelf[2] = new Book("C","c",2001); bookshelf.sort(byDate, Array.NUMERIC | Array.DESCENDING); trace(bookshelf.join("\n")); } function byDate(valueA:Book, valueB:Book):Number { if (valueA.year == valueB.year) {return 0;} else if (valueA.year < valueB.year) {return -1;} else {return 1;} } }
} class Book {
public var title:String; public var author:String; public var year:int; public function Book (title:String, author:String, year:int) { this.title = title; this.author = author; this.year = year; } public function toString():String { return """ + title + "", " + author + " (" + year + ")"; } } </source>
The sortOn( ) can sort on more than one field
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var cars:Array = new Array( ); cars.push({make: "H", year: 1997, color: "maroon"}); cars.push({make: "Chrysler", year: 2000, color: "beige"}); cars.push({make: "Mercedes", year: 1985, color: "blue"}); cars.push({make: "Fiat", year: 1983, color: "gray"}); cars.sortOn(["year", "make"]); for (var i:int = 0; i < cars.length; i++) { trace(cars[i].color + "\t" + cars[i].year + "\t" + cars[i].make); } cars.sortOn(["make", "year"]); for (var i:int = 0; i < cars.length; i++) { trace(cars[i].color + "\t" + cars[i].year + "\t" + cars[i].make); } } }
}
</source>