【发布时间】:2009-11-19 11:50:17
【问题描述】:
我有一个名为 alarmQueue 的数组。我正在将一个包含内容 [hours:int, minutes:int, seconds:int] 的新数组推入其中,我想使用 alarmQueue.sortOn() 对警报队列进行排序升序但我有让我无法理解逻辑的问题。
// the function to push the alarm in to a queue
public function setAlarm(_hours:int = 0, _minutes:int = 0, _seconds:int = 0):void
{
var alarmAsArray:Array = new Array(_hours, _minutes, _seconds);
alarmQueue.push(alarmAsArray);
alarmQueue.sortOn([0, [1, 2]], Array.NUMERIC | Array.DESCENDING);
trace(alarmQueue);
}
我正在设置这些闹钟:
clock.setAlarm(1, 0, 31); // alarm 1
clock.setAlarm(12, 1, 21); // alarm 2
clock.setAlarm(12, 1, 19); // alarm 3
并获得以下痕迹:
1,0,31
12,1,21,1,0,31
12,1,21,12,1,19,1,0,31
我似乎将它们排序为:警报 2、警报 3、警报 1 但我想按小时、分和秒排序。
谁能解释我的分类问题? 干杯!
感谢您的反馈。
我已经测试过了:
警报队列.push( { 小时:_小时, 分钟:_分钟, 秒:_seconds }); 警报队列.sortOn( ['小时','分钟','秒'], [数组.NUMERIC |数组.ASCENDING,数组.NUMERIC |数组.ASCENDING,数组.NUMERIC | Array.ASCENDING] ); 如果(警报队列长度 == 3) { for(var i:int = 0; i SMALLERTHAN alarmQueue.length; i++) { 跟踪(alarmQueue[i].hours,alarmQueue[i].minutes,alarmQueue[i].seconds); } }由于数组项现在是对象,我不得不稍微更改跟踪,并使用 SMALLERTHAN 因为
【问题讨论】:
-
为什么是
[0, [1, 2]]而不是[0, 1, 2]?你想要降序排序,这就是你得到的。对吗?