Flash / Flex / ActionScript/Array/sortOn
Версия от 09:19, 26 мая 2010; (обсуждение)
sortOn( ) supports sort modifiers
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);
}
}
}
}
There are five such optional flags that you can pass to either sort() or sortOn():
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 + ")";
}
}
The sortOn( ) can sort on more than one field
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);
}
}
}
}