博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法
阅读量:5279 次
发布时间:2019-06-14

本文共 3134 字,大约阅读时间需要 10 分钟。

对数组中的元素进行排序。 此方法按 Unicode 值排序。 (ASCII 是 Unicode 的一个子集。)

默认情况下,Array.sort()按以下方式进行排序:

1. 排序区分大小写(Z优先于a)。

2. 按升序排序(a优先于b)。

3. 修改该数组以反映排序顺序;在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。

4. 元素无论属于何种数据类型,都作为字符串进行排序,所以 100 在 99 之前,这是因为 "1" 的字符串值小于 "9" 的字符串值。

如果要使用与默认设置不同的设置对数组进行排序,可以使用...args参数说明中sortOptions部分所描述的某种排序选项,也可以创建

自定义函数来进行排序。 如果创建自定义函数,请调用sort()方法,并将自定义函数的名称作为第一个参数 (compareFunction)。

参数

 

...args— 指定一个比较函数和确定排序行为的一个或多个值的参数。

此方法使用语法和参数顺序Array.sort(compareFunction, sortOptions),其参数定义如下:

*compareFunction- 一个用来确定数组元素排序顺序的比较函数。 此参数是可选的。 比较函数应该用两个参数进行比较。 给定元

素 A和 B,compareFunction的结果可以具有负值、0 或正值:

○ 若返回值为负,则表示 A 在排序后的序列中出现在 B 之前。

○ 若返回值为 0,则表示 A 和 B 具有相同的排序顺序。

○ 若返回值为正,则表示 A 在排序后的序列中出现在 B 之后。

*sortOptions- 一个或多个数字或定义的常量,相互之间由|(按位 OR)运算符隔开,它们将排序的行为从默认行为更改为其它行

为。 此参数是可选的。 下面是sortOptions可接受的值:

○ 1 或Array.CASEINSENSITIVE

○ 2 或Array.DESCENDING

○ 4 或Array.UNIQUESORT

○ 8 或Array.RETURNINDEXEDARRAY

○ 16 或Array.NUMERIC

 

返回

Array— 返回值取决于您是否传递任何参数,如以下列表中所述:

• 如果为...args参数的sortOptions变量指定值 4 或Array.UNIQUESORT,并且所排序的两个或更多个元素具有相同的排序字

段,则Flash 返回值 0 并且不修改数组。

• 如果为...args参数的sortOptions变量指定值 8 或Array.RETURNINDEXEDARRAY,则 Flash 返回排序后的索引数值数组

以反映排序结果,并且不修改数组。

• 否则,Flash 不返回任何内容并修改该数组以反映排序顺序。

 

下例是将sort()方法与自定义排序函数 (sortOnPrice) 一起使用,该函数按 price 排序,而不是按字母顺序排序。 请注意,新函数

getPrice()将提取 price。

 

以下Main.as可作为文档类测

1 package  2 { 3     import flash.display.Sprite; 4  5     /** 6       * ... 7       * @author FrostYen 8       */ 9     public class Main extends Sprite10     {11         var vegetables:Array = new Array  ;12         public function Main()13         {14             vegetables.push(new Vegetable("lettuce",1.49));15             vegetables.push(new Vegetable("spinach",1.89));16             vegetables.push(new Vegetable("asparagus",3.99));17             vegetables.push(new Vegetable("celery",1.29));18             vegetables.push(new Vegetable("squash",1.44));19             trace(vegetables);20             // lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.4421             vegetables.sort(sortOnPrice);22             trace(vegetables);23             // celery:1.29, squash:1.44, lettuce:1.49, spinach:1.89, asparagus:3.9924         }25 26         private function sortOnPrice(a:Vegetable,b:Vegetable):Number27         {28             var aPrice:Number = a.getPrice();29             var bPrice:Number = b.getPrice();30 31             if ((aPrice > bPrice))32             {33                 return 1;34             }35             else if ((aPrice < bPrice))36             {37                 return -1;38             }39             else40             {41                 //aPrice == bPrice42                 return 0;43             }44         }45     }46 47 }48 class Vegetable;49 {50     private var name:String;51     private var price:Number;52 53     public function Vegetable(name:String,price:Number)54     {55         this.name = name;56         this.price = price;57     }58 59     public function getPrice():Number60     {61         return price;62     }63 64     public function toString():String65     {66         return " " + name + ":" + price;67     }68 }

 

转载于:https://www.cnblogs.com/frost-yen/p/4519520.html

你可能感兴趣的文章
ajax不跳转页面的快速删除操作,可添加美观样式
查看>>
使用HTML语言和CSS开发商业站点(7)
查看>>
第四章例4-3
查看>>
O the joy of having nothing / 아무것도 갖지않고
查看>>
[COURSE_PTHE] 19. 密码学
查看>>
IOS平台开发学习笔记
查看>>
如何组织Html元素与如何进行CSS命名(上)
查看>>
二、Python 数据类型
查看>>
vue表单校验提交报错TypeError: Cannot read property 'validate' of undefined
查看>>
pycharm connect to mysql
查看>>
59、crontab用法简介
查看>>
在NSMutableArray中添加空元素:NSNull类的使用
查看>>
eclipse(luna)搭建SSH(struts2+spring4+hibernate4)
查看>>
如何建立自己的博客网站
查看>>
2 单例设计模式面试题
查看>>
字符串转为数组
查看>>
Mock制作假数据
查看>>
Scroll的使用
查看>>
Maven学习笔记(一)
查看>>
css布局顺口溜,cs网页设计口诀
查看>>