Avatar billede hoppe11 Nybegynder
14. juni 2007 - 17:55 Der er 6 kommentarer og
1 løsning

object undefined

Når jeg forsøger at udskrive længden af et object får jeg undefined?

Objectet er en flerdimensionel variabel jeg selv opretter

txt.text = data+'\n';
txt.text += data.length;

resultat:

[object Object]
undefined
Avatar billede maqhem Nybegynder
14. juni 2007 - 18:07 #1
Det er klart nok, for et objekt har ingen længde, med mindre, du behandler det som et array:

var o:Object = new Object();
o = [1, 2, 3];
o.En = "Første værdi";
o.To = "Anden værdi";
o.Tre = "Sidste værdi";
trace(o);
trace(o.length);

Hvis du vil vide, hvor mange elementer, dit objekt indeholder, kan du bruge en selvdefineret funktion til det:

var o:Object = new Object();
o = [1, 2, 3];
o.En = "Første værdi";
o.To = "Anden værdi";
o.Tre = "Sidste værdi";
trace(FindLength(o));

function FindLength(b:Object):Number {
    var Temporary_Count:Number = 0;
    for(var i:String in b) {
        Temporary_Count++;
    }
    return Temporary_Count;
}
Avatar billede maqhem Nybegynder
14. juni 2007 - 18:30 #2
Og hvis du har et mere avanceret objekt som:

var o:Object = new Object();
o = [[1, 2], [3]];
o.En = "Første værdi";
o.To = "Anden værdi";
o.Tre = "Sidste værdi";
o.Dimmensioner = [[0, 0], 0, [[[0], [0, 0]]], [0, [0, 0, 0]]];

Så vil det være en fordel at udvide funktionen:

trace(FindLength(o));
function FindLength(b:Object):Number {
    var Temporary_Count:Number = 0;
    for(var i:String in b) {
        if(b[i] instanceof Array) {
            Temporary_Count += FindLength(b[i]);
        } else {
            Temporary_Count++;
        }
    }
    return Temporary_Count;
}
Avatar billede maqhem Nybegynder
14. juni 2007 - 18:35 #3
Og har du Objects i dit Object (som o.N = {a:0, b:1, c:2, d:3, e:4, f:5};), så udskift følgende:
if(b[i] instanceof Array) {
med
if(b[i] instanceof Object) {
Avatar billede hoppe11 Nybegynder
14. juni 2007 - 19:12 #4
mens jeg lige sidder og tænker over det hele kunne jeg godt tænke mig at vide om at et object altid bliver listet baglæns?

eks.
for(var key in obj) //
Avatar billede maqhem Nybegynder
14. juni 2007 - 20:08 #5
Når du benytter for..in vil den altis liste elementerne i modsat rækkefølge end tilføjet. Både af elementer i arrays, objects og movieclips.
Avatar billede hoppe11 Nybegynder
17. juni 2007 - 14:36 #6
smid et svar :)
Avatar billede hoppe11 Nybegynder
25. juni 2007 - 17:11 #7
lukker
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