示例
下面的示例创建一个新数组,并且按照 name 字段和 city 字段对该新数组进行排序。第一次排序使用 name 作为第一个排序值,使用 city 作为第二个排序值。第二次排序使用 city 作为第一个排序值,使用 name 作为第二个排序值。


var rec_array: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: // 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: // 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: // john, kansas city // bob, omaha // john, omaha

下面的对象数组由说明如何使用 options 参数的后续示例使用:

var my_array:Array = new Array();
my_array.push({password: "Bob", age:29});
my_array.push({password: "abcd", age:3});
my_array.push({password: "barb", age:35});
my_array.push({password: "catchy", age:4});

对 password 字段执行默认排序将产生以下结果:

my_array.sortOn("password");
// Bob
// abcd
// barb
// catchy

对 password 字段执行不区分大小写的排序将产生以下结果:

my_array.sortOn("password", Array.CASEINSENSITIVE);
// abcd
// barb
// Bob
// catchy

对 password 字段执行不区分大小写的降序排序将产生以下结果:

my_array.sortOn("password", Array.CASEINSENSITIVE | Array.DESCENDING);
// catchy
// Bob
// barb
// abcd

对 age 字段执行默认排序将产生以下结果:

my_array.sortOn("age");
// 29
// 3
// 35
// 4

对 age 字段执行数值排序将产生以下结果:

my_array.sortOn("age", Array.NUMERIC);
// my_array[0].age = 3
// my_array[1].age = 4
// my_array[2].age = 29
// my_array[3].age = 35

对 age 字段执行降序数值排序将产生以下结果:

my_array.sortOn("age", Array.DESCENDING | Array.NUMERIC);
// my_array[0].age = 35
// my_array[1].age = 29
// my_array[2].age = 4
// my_array[3].age = 3

在使用 Array.RETURNEDINDEXARRAY 排序选项时,您必须将返回值分配给不同的数组。原始数组不会被修改。

var indexArray:Array = my_array.sortOn("age", Array.RETURNINDEXEDARRAY);