J'ai un tableau appelé alarmQueue. J'y insère un nouveau tableau dont le contenu est [hours:int, minutes:int, seconds:int] et j'aimerais utiliser alarmQueue.sortOn() pour trier la file d'attente des alarmes de manière ascendante, mais j'ai du mal à comprendre cette logique.
// 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);
}
Je mets ces alarmes :
clock.setAlarm(1, 0, 31); // alarm 1
clock.setAlarm(12, 1, 21); // alarm 2
clock.setAlarm(12, 1, 19); // alarm 3
et j'obtiens les traces suivantes :
1,0,31
12,1,21,1,0,31
12,1,21,12,1,19,1,0,31
Il semble que je les ordonne comme suit : alarme 2, alarme 3, alarme 1. mais je veux les classer par heure, puis par minute et par seconde.
Quelqu'un peut-il m'éclairer sur mes difficultés de tri ? A la vôtre !
Merci pour les commentaires.
J'ai testé :
alarmQueue.push(
{
hours: \_hours,
minutes: \_minutes,
seconds: \_seconds
});
alarmQueue.sortOn(
\['hours', 'minutes', 'seconds'\],
\[Array.NUMERIC | Array.ASCENDING, Array.NUMERIC | Array.ASCENDING, Array.NUMERIC | Array.ASCENDING\]
);
if(alarmQueue.length == 3)
{
for(var i:int = 0; i SMALLERTHAN alarmQueue.length; i++)
{
trace(alarmQueue\[i\].hours,alarmQueue\[i\].minutes, alarmQueue\[i\].seconds);
}
}
J'ai dû modifier légèrement la trace car les éléments du tableau sont maintenant des objets et j'ai utilisé SMALLERTHAN car le symbole < semble rompre les balises de code ici, mais l'application ne compile pas car Flex Builder me dit que Array.ASCENDING n'est pas une méthode de tri, alors j'ai vérifié livedocs et je n'en ai trouvé aucune mention là aussi. D'autres hypothèses ?