Avatar billede oleskrogh Nybegynder
27. juni 2003 - 11:36 Der er 12 kommentarer og
1 løsning

funktion der tester indhold i array

Jeg skal lave en funktion der tjekker om ét bestemt navn findes i en array. Noget i denne retning:

navneliste=["Kaj","Bent","Linda"osv]
function tjeknavn(navn){
navn="Kaj"
if(Kaj findes i array'en){
trace("JUHU")
}else{
trace("desværre nej")
}
}
Er der nogen der har et bud på den?
/Ole
Avatar billede barklund Nybegynder
27. juni 2003 - 11:44 #1
Array.prototype.exists = function(val) {
    var i = this.length;
    while(i--) {
        if (this[i] == val) return true;
    }
    return false;
}
ASSetPropFlags(Array.prototype,['exists'],1);

function tjeknavn(navn) {
    navneliste.exists(navn);
}
Avatar billede oleskrogh Nybegynder
27. juni 2003 - 11:47 #2
Det forstår jeg ikke et dyt af, men jeg afprøver lige om jeg kan få den til at virke!
Avatar billede olehus Nybegynder
27. juni 2003 - 11:51 #3
Hej Ole
Prøv:
Array.prototype.tjeknavn = function(navn) {
    for (i=0; i<this.length; i++) {
        if (this[i] == navn) {
            trace("JUHU");
            break;
        } else {
            trace("desværre nej");
        }
    }
};
//testcode:
myArray = ["Kaj", "Bent", "Linda"];
myArray.tjeknavn("Linda");
MVH
Ole
Avatar billede olehus Nybegynder
27. juni 2003 - 12:03 #4
Hej igen
Jeg fandt lige på en bedre løsning:
Array.prototype.tjeknavn = function(navn) {
    for (i=0; i<this.length; i++) {
        if (this[i] == navn) {
            this.succes=true;
            break;
        } else {
            this.succes=false;
        }
    }
    if(this.succes){
    trace("JUHU");
    }else{
    trace("desværre nej");
    }
};
//testcode:
myArray = ["Kaj", "Bent", "Linda"];
myArray.tjeknavn("Kaj");
MVH
Ole
Avatar billede barklund Nybegynder
27. juni 2003 - 12:09 #5
Bortset fra at dit array bagefter har en attribut, der hedder "succes" (hvilket ikke var der før) og at denne meget specifikke funktion findes på alle arrays men faktisk kun skal anvendes til at tjekke navn.

Min funktion er en generel "eksisterer denne værdi i dette array" funktion og så kan man anvende returværdien til at udføre en handling via en simpel if.
Avatar billede oleskrogh Nybegynder
27. juni 2003 - 12:31 #6
Tak for diskussionen!
Mest til Ole:
Jeg har lavet et inputfelt(navn) og en knap med følgnde skript:
on (release) {
    navn = navn.text;
    myArray.tjeknavn(navn);
}
Ligegyldigt hvad jeg skriver i feltet får jeg "desværre nej".
myArray har jeg indføjet ovenover funktionen!
/Ole
Avatar billede olehus Nybegynder
27. juni 2003 - 12:54 #7
Hej Ole
Tekstfelt og prototype ligger i roden:

on (release) {
    navn = _root.navn.text;
    _root.myArray.tjeknavn(navn);
}
MVH
Ole
Avatar billede oleskrogh Nybegynder
27. juni 2003 - 13:19 #8
Ja, det forstår jeg.
Det virker som om funktionen kun virker første gang. Derefter får man konsekvent "desværre nej".
Det kan jeg altså ikke gennemskue!
/ole
Avatar billede olehus Nybegynder
27. juni 2003 - 13:28 #9
Hej Ole
Hvis du et textfield der hedder "navn", og en knap hvor følge script ligger på:
on (release) {
    navn = _root.navn.text;
    _root.myArray.tjeknavn(navn);
}
samt følgende framescript i root:
Array.prototype.tjeknavn = function(navn) {
    for (i=0; i<this.length; i++) {
        if (this[i] == navn) {
            this.succes=true;
            break;
        } else {
            this.succes=false;
        }
    }
    if(this.succes){
    trace("JUHU");
    }else{
    trace("desværre nej");
    }
};
//testcode:
myArray = ["Kaj", "Bent", "Linda"];
//myArray.tjeknavn("Kaj");
Så burde det virke hver gang du skriver et nyt navn i inputfeltet.
MVH
Ole
Avatar billede oleskrogh Nybegynder
27. juni 2003 - 13:37 #10
Nå, nu fik du point for din indsats. På min computer virker det kun i første forsøg.
myArray indsættes vel bare lige over funktionen i roden?!
/ole
Avatar billede barklund Nybegynder
27. juni 2003 - 13:39 #11
(Det er stadig en rigtig dårlig måde at gøre det på!)
Avatar billede jakwag Nybegynder
27. juni 2003 - 16:04 #12
Ole> Undskyld jeg  blander mig.

Barklund> Jeg har før brugt ASSetPropFlags til at loope gennem objecters properties (eller i forbindelse med), men hvad bruger du den til i dit eksempel?

: ) Jakob
Avatar billede barklund Nybegynder
28. juni 2003 - 00:48 #13
ASSetPropFlags bruges til at skjule eller vise properties i et objekt i for..in løkker. Desuden kan en property sættes til et var "ikke-overskrivelig" eller "ikke-slettelig"...

Ovenover bruges den til at skjule funktionen fra Array.prototype-objektet, da vi ikke ønsker at den fremstår i en for..in på array'et...
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