Avatar billede jakwag Nybegynder
28. februar 2003 - 13:36 Der er 16 kommentarer og
1 løsning

Omvendt

hey!

Jeg har dette script:

var name_list=new Object();
name_list.formand="lise";
name_list.rengøring="inge";
name_list.kassere="birgitte";
/********************************************/
for(i in name_list){
    trace(i);
}

Det giver output:
kassere
rengøring
formand

Hvorfor kommer mine properties i omvendt rækkefølge?
Jeg er ikke ude efter en løsning, kun en forklaring af "hvorfor?"
Avatar billede jepe Nybegynder
28. februar 2003 - 13:44 #1
måske dine værdier bliver sorteret alfabetisk...?
Avatar billede jakwag Nybegynder
28. februar 2003 - 13:47 #2
jepe:
Det var også min første tanke, men f kommer før k i alfabetet :)
Avatar billede jepe Nybegynder
28. februar 2003 - 13:55 #3
:->  - tænkte på dine navne under de tre poster...
Avatar billede jakwag Nybegynder
28. februar 2003 - 13:59 #4
nope

var name_list=new Object();
name_list.formand="lise";
name_list.regnskab="anne";
name_list.rengøring="inge";
name_list.kassere="birgitte";
/********************************************/
for(i in name_list){
    trace(i);
}

giver:

kassere
rengøring
regnskab
formand
Avatar billede jakwag Nybegynder
28. februar 2003 - 14:00 #5
Det bliver altså vendt
Avatar billede jepe Nybegynder
28. februar 2003 - 14:10 #6
hm. har nix forslag, desværre...
Avatar billede barklund Nybegynder
28. februar 2003 - 15:45 #7
for..in løkker returnerer værdier i en rækkefølge med den senest ændrede værdi først... Det skyldes flash's interne håndtering af objekter's properties. Netop det faktum, at den ikke kigger på værdien gør, at den er en smule hurtigere end andre løkker...
Avatar billede jakwag Nybegynder
01. marts 2003 - 14:13 #8
barklund: Tak!
Avatar billede jakwag Nybegynder
01. marts 2003 - 14:21 #9
!
Avatar billede barklund Nybegynder
01. marts 2003 - 16:42 #10
Hmm... skulle pointene så ikke have været mine? :o)
Avatar billede jakwag Nybegynder
25. april 2003 - 19:54 #11
for lige at fortsætte på et spørgsmål jeg først nu har fundet et rigtigt svar på:

Hvorfor bliver de listet op baglens?

for...in loops køre altid baglens (som barklund også var inde på). Dette skyldes at et for loop der køre "baglens" altid er hurtigere end et der køre forlens.

Det er f.eks. hurtigere at skrive:

var len = my_array.length-1;
for(var i=len;i>=0;i--){
    trace(my_array[i])
}

end det er at skrive:

var len = my_array.length;
for(var i=0;i<len;i++){
    trace(my_array[i])
}

Når AS møder et "+" skal den først tjekke hvad den skal lægge sammen (string eller number) og derefter lægge dem sammen.
Et minus kan kun bruges med number, og skal derfor ikke tjekke noget.

Derfor tager tager +'er mere tid, og derfor køre baglens loops hurtigst, og derfor er for...in loops lavet så de køre baglens.


Barklund: Har jeg nogensinde givet dig point? Jeg ved ikke hvad jeg har haft gang i. : )
Avatar billede barklund Nybegynder
26. april 2003 - 13:21 #12
for..in loops kører IKKE baglæns:

b = new Array();
b[0] = 1;
b[1] = 2;
b[2] = 3;
for (i in b) trace("b["+i+"] = "+b[i]);
a = new Array();
a[2] = 3;
a[1] = 2;
a[0] = 1;
for (i in a) trace("a["+i+"] = "+a[i]);

Den kører blot i en rækkefølge, hvor den senest opdaterede kommer først!!!!

Og nej, jeg fik aldrig point :)
Avatar billede barklund Nybegynder
26. april 2003 - 13:22 #13
Men du har ret i, at manuelle loops er hurtigere, hvis de kører baglæns - det har bare ikke noget med for..in at gøre.
Avatar billede jakwag Nybegynder
27. april 2003 - 13:19 #14
hhmmm...

Kan det ikke tænke at netop fordi at den bruger - i dens loop, lister den den sidst ændrede op først i stedet for den først ændrede.

Forklaringen burde passe. Den kommer fra Matthew Boles og James Talbot. Det er dem der har udviklet Macromedias undervisnings materiale og de proffesionelle certifikations tests.

Jeg har oprettet et spørgsmål til dig med point, undskyld ventetiden.
http://www.eksperten.dk/spm/345273
Avatar billede barklund Nybegynder
27. april 2003 - 23:57 #15
Min forklaring er den rigtige. Uanset hvad nogle andre siger.

Et for..in lister den sidst ændrede først. Flash MX lister den sidst tilføjede først. Flash 5 lister den sidst opdaterede først. Dette giver en stor forskel i praksis.
Avatar billede jakwag Nybegynder
28. april 2003 - 08:46 #16
okay okay!

-du plejer jo at have ret. : )
Avatar billede barklund Nybegynder
28. april 2003 - 09:35 #17
Tak for tilliden... Og tark for pointene... :)
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