286 Chapter 12: ActionScript Dictionary
Performing a sort that returns an index array doesn’t change the elements in the array:
// Before sorting
// my_array[0].age = 29;
// my_array[1].age = 3;
// my_array[2].age = 35;
// my_array[3].age = 4;
// After a sort that returns an array containing index values
// Note that the original array is unchanged.
// You can then use the returned array to display sorted information
// without modifying the original array.
var indexArray:Array = my_array.sortOn("age", Array.RETURNINDEXEDARRAY);
// my_array[0].age = 29;
// my_array[1].age = 3;
// my_array[2].age = 35;
// my_array[3].age = 4;
Example
This example creates a new array and sorts it according to the fields name and city: The first sort
uses
name as the first sort value and city as the second. The second sort uses city as the first sort
value and
name as the second.
var rec_array = new Array();
rec_array.push( { name: "john", city: "omaha", zip: 68144 } );
rec_array.push( { name: "john", city: "kansas city", zip: 72345 } );
rec_array.push( { name: "bob", city: "omaha", zip: 94010 } );
for(i=0; i<rec_array.length; i++) {
trace(rec_array[i].name + ", " + rec_array[i].city);
}
// results in
// john, omaha
// john, kansas city
// bob, omaha
rec_array.sortOn( [ "name", "city" ]);
for(i=0; i<rec_array.length; i++) {
trace(rec_array[i].name + ", " + rec_array[i].city);
}
// results in
// bob, omaha
// john, kansas city
// john, omaha
rec_array.sortOn( ["city", "name" ]);
for(i=0; i<rec_array.length; i++) {
trace(rec_array[i].name + ", " + rec_array[i].city);
}
// results in
// john, kansas city
// bob, omaha
// john, omaha
See also
| (bitwise OR)
, Array.sort()