Flash / Flex / ActionScript/Array/sortOn

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

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>