![]() ![]()  | |
Flash Player 6;附加功能已在 Flash Player 7 中添加。
my_array.sortOn("fieldName" )my_array.sortOn("fieldName",option|option|... )my_array.sortOn( [ "fieldName" , "fieldName" , ... ] )my_array.sortOn( [ "fieldName" , "fieldName" , ...] ,option|option|... )
注意:在显示中括号 ([]) 的地方,您必须将它们包括在代码中;即,中括号不表示可选参数。
fieldName 一个字符串,标识 Array 的某元素中用作排序值的字段。 
option 由 |(按位 OR)运算符分隔的一个或多个数字或字符串,这些数字或字符串更改根据默认值排序的行为。下面是 option 可以接受的值:
Array.CASEINSENSITIVE Array.DESCENDINGArray.UNIQUEArray.RETURNINDEXEDARRAY Array.NUMERIC上述各个选项在下面的“说明”部分中将予以详细讨论。
返回值取决于是否传递任何参数:
option 指定值 4 或 Array.UNIQUE,并且所排序的两个或多个元素具有相同的排序字段,则 Flash 返回值 0 并且不修改该数组。 option 指定值 8 或 Array.RETURNINDEXEDARRAY,则 Flash 将返回反映排序结果的数组并且不修改该数组。 方法;基于数组中的一个或多个字段对数组中的元素进行排序。如果您传递多个 fieldName 参数,则第一个字段表示主排序字段,第二个字段表示下一个排序字段,依此类推。Flash 根据 
ASCII (Unicode) 值排序。如果所比较的两个元素中的任何一个不包含在 fieldName 参数中指定的字段,则认为该字段是 undefined,并且在排序后的数组中不按任何特定顺序连续放置这些元素。
默认情况下,Array.sortOn() 按如下方式工作:
您可以使用 option 标志覆盖这些默认值。以下示例出于阐释目的使用 option 标志的不同形式。如果您要对简单数组(例如,只有一个字段的数组)进行排序,或者如果要指定 options 参数不支持的排序顺序,则使用 Array.sort()。
若要用数值格式传递多个标志,则用 |(按位 OR)运算符分隔它们或将这些标志值加在一起。以下代码显示三种不同的方式来指定数值降序排序:
my_Array.sortOn(someFieldName, 2 | 16); my_Array.sortOn(someFieldName, 18); my_Array.sortOn(someFieldName, Array.DESCENDING | Array.NUMERIC);
如果您使用标志的字符串形式(例如,DESCENDING),而不是数值形式 (2),则启用代码提示(请参见使用代码提示)。
考虑以下数组:
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});
对密码字段执行默认排序将产生以下结果:
my_array.sortOn("password")
// Bob
// abcd
// barb
// catchy
对密码字段执行不区分大小写的排序将产生以下结果:
my_array.sortOn("password", Array.CASEINSENSITIVE)
// abcd
// barb
// Bob
// catchy
对密码字段执行不区分大小写的降序排序将产生以下结果:
my_array.sortOn("password", 1|2)
// catchy
// Bob
// barb
// abcd
对年龄字段执行默认排序将产生以下结果:
my_array.sortOn("age")
// 29
// 3
// 35
// 4
对年龄字段执行数值排序将产生以下结果:
my_array.sortOn("age", 16)
// 3
// 4
// 29
// 35
对年龄字段执行降序数值排序将产生以下结果:
my_array.sortOn("age", 18)
// 35
// 29
// 4
// 3
执行排序时按如下所示更改数组中的元素:
// 在排序前
// my_array[0].age = 29;
// my_array[1].age = 3;
// my_array[2].age = 35;
// my_array[3].age = 4;
// 在不为 option 传递值 8 的任何排序后
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;
执行返回索引数组的排序时不更改该数组中的元素:
// 在排序前
// my_array[0].age = 29;
// my_array[1].age = 3;
// my_array[2].age = 35;
// my_array[3].age = 4;
// 在返回包含索引值的数组的排序后
// 请注意,原始数组未更改。
// 然后,可以使用返回的数组显示排序的信息,
// 而不必修改原始数组。
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;
此示例创建一个新数组,并且按照字段 name 和 city 对该新数组排序:第一次排序使用 name 作为第一个排序值,使用 city 作为第二个排序值。第二次排序使用 city 作为第一个排序值,使用 name 作为第二个排序值。
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);
}
// 结果为 
// 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);
}
// 结果为 
// 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);
}
// 结果为 
// john, kansas city
// bob, omaha
// john, omaha
![]() ![]()  | |