Avatar billede kalleballe Nybegynder
13. august 2007 - 14:10 Der er 19 kommentarer

sorter xml data efter dato

Hej, - jeg har en række data som jeg læser ind i flash via xml, - inkl.

<date>1978-03-15 12:54:00</date>

Som så er forskellig for alle poster.

Jeg putter mine data ind i objekter som jeg så har i nogle arrays.

Jeg vil så gerne sortere mit array efter datoen fra <date> i objekterne.

Men hvordan gør man det?

vh

kalleBalle
Avatar billede kalleballe Nybegynder
13. august 2007 - 15:04 #1
Jeg kan fange datoen fra mine objekter med:

for(var n=0;n<global_items_total.length; n++){
               
                trace("--------- global_items_total ==== "+global_items_total[n][0].obj_date);
               
            }
Avatar billede kalleballe Nybegynder
13. august 2007 - 15:04 #2
så jeg skal altså have sorteret

global_items_total

efter dato ;)
Avatar billede mat Nybegynder
13. august 2007 - 15:22 #3
Du kan ikke sortere på serveren?

Umiddelbart ville jeg tro at du kunne mappe dine dato strenge ud i til Number felter i objekter som;

o = {year:1978, month:3, date:15, hour:12, min:54, sec:0};

og smide dem i et array du derefter sorterer med sortOn hen over properties i dine objekter;

s_a = arr.sortOn(["year", "month", "date", "hour", "min", "sec"], Array.NUMERIC);

mvh mat
Avatar billede mat Nybegynder
13. august 2007 - 15:28 #4
Eller du kan knalde det sammen til ét tal med de mest betydende forrest, a la;

19780315125400

Og så sortere dem almindeligt numerisk?
Avatar billede kalleballe Nybegynder
13. august 2007 - 15:44 #5
hvordan 'knalder' jeg dem sammen til 1 tal?
Iøvrigt en super ide ;)

vh

kalleBalle
Avatar billede kalleballe Nybegynder
13. august 2007 - 15:47 #6
hm, - prøver lige dit første forslag..
Avatar billede kalleballe Nybegynder
13. august 2007 - 16:10 #7
kan squ ikke få den til at sortere....

jeg har:

for(var n=0;n<global_items_total.length; n++){
               
               
               
                global_items_total.sortOn(["obj_date_year", "obj_date_month", "obj_date_date", "obj_date_hour", "obj_date_min", "obj_date_sec"], Array.NUMERIC);
               
            }

global_items_total er mit array fyldt med objekter og jeg har tilføjet de forskellige properties til objekterne.
Avatar billede kalleballe Nybegynder
13. august 2007 - 16:11 #8
shit, - jeg mener naturligvis ikke at det skal i en for løkke...
Avatar billede kalleballe Nybegynder
13. august 2007 - 16:11 #9
men altså:

global_items_total.sortOn(["obj_date_year", "obj_date_month", "obj_date_date", "obj_date_hour", "obj_date_min", "obj_date_sec"], Array.NUMERIC);
Avatar billede kalleballe Nybegynder
13. august 2007 - 16:12 #10
men såvidt jeg kan se sker der ikke noget med global_tiems_total arrayet :(
Avatar billede kalleballe Nybegynder
13. august 2007 - 16:19 #11
har lavet en fejl, - tjekker lige om det virker nu.
Avatar billede kalleballe Nybegynder
13. august 2007 - 16:37 #12
shit, - det virker nu, - jeg brugte en blanding af de 2 måde du foreslog!

Smid lige et velfortjent svar.

vh

kalleBalle
Avatar billede kalleballe Nybegynder
13. august 2007 - 16:38 #13
øv det virker stadig ikke, - der var jeg lige lidt hurtig ;)
Avatar billede kalleballe Nybegynder
13. august 2007 - 16:45 #14
jeg får en værdi når jeg skriver:

trace("global_items_top adsfjæalsdkjfæaljks = "+global_items_top[0][0].obj_date_number);

dvs. at propertien findes, - men hvad er der så forkert her:

for(var n=0;n<global_items_top.length;n++){
            global_items_top[n][0].sortOn(["obj_date_number"],Array.NUMERIC);
           
            }
Avatar billede mat Nybegynder
14. august 2007 - 07:14 #15
Lad være med at sætte square brackets rundt om den streng, der angiver den property du sorterer efter.

mvh mat
Avatar billede mat Nybegynder
14. august 2007 - 07:16 #16
Eller næh, hvordan virker ovenstående ikke?
Avatar billede kalleballe Nybegynder
14. august 2007 - 08:51 #17
Jeg har løst det med en bubblesort funktion!

public static function bubbleSort(myItems) {

        for (var i = myItems.length-1; i>0; i--) {
            for (var j = 0; j<i; j++) {
                if (Number(myItems[j][0].obj_date_number)>=Number(myItems[j+1][0].obj_date_number)) {

                    var temp = myItems[j];
                    myItems[j] = myItems[j+1];
                    myItems[j+1] = temp;
                }
            }
        }
        myItems.reverse();


    }
Avatar billede mat Nybegynder
14. august 2007 - 09:06 #18
Jammen er det ikke bare fordi du forsøger at kalde sortOn på et objekt i dit array, istedet for arrayet?

global_items_top[n][0].sortOn(["obj_date_number"],Array.NUMERIC); // <- her

mvh mat
Avatar billede mat Nybegynder
16. august 2007 - 14:49 #19
eller?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester