Flash / Flex / ActionScript/Array/sortOn

Материал из Web эксперт
Версия от 08:14, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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);
        }
    }
  }
}