Avatar billede jacobs1 Nybegynder
13. marts 2006 - 09:34 Der er 18 kommentarer og
1 løsning

Array listning

Problemet er at jeg har et array med en masse by navne, som jeg gerne vil have listet,
men hvis et bynavn optræder mere en gang, skal den kun vise det en gang.

Altså sådan her: kbh,kolding,odense,vejle


Jeg kan simpelhen ikke regne den ud - håber I kan hjælpe.

mit kode eksempel:


CityArray = new Array();
CityArray[0] = "kbh";
CityArray[1] = "kbh";
CityArray[2] = "vejle";
CityArray[3] = "odense";
CityArray[4] = "odense";
CityArray[5] = "odense";
CityArray[6] = "kolding";

c=0;
for (var j = 0; j<CityArray.length; j++) {
    for (var p = 0; p<CityArray.length; p++) {
        if (CityArray[j] == CityArray[p]) {
        c++
        if(c>2){
            CityArray.pop(CityArray[p])
            c=0;
        }
           
        }
    }
}
CityArray.sort()
trace(CityArray);

// Mit output: kbh,kbh,odense,vejle

// Output som jeg gerne vil have det til at se ud: kbh,kolding,odense,vejle
Avatar billede barklund Nybegynder
13. marts 2006 - 10:00 #1
Kig lige i manualen under pop - hvad forsøger du at bruge den til og hvad gør den i virkeligheden? For det første tager pop() ikke noget argument :)
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 10:15 #2
Okay hmmm
Kan man så bruge push til at proppe de navne ind i et nyt Array, man gerne vil have med??
Avatar billede barklund Nybegynder
13. marts 2006 - 10:17 #3
Det kan man for eksempel gøre - eller bruge splice() til at hive dem ud af det eksisterende - så skal man dog passe på sin counter :)
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 10:17 #4
noget i stil med det her?

CityArray = new Array();
CityArray[0] = "kbh";
CityArray[1] = "kbh";
CityArray[2] = "vejle";
CityArray[3] = "odense";
CityArray[4] = "odense";
CityArray[5] = "odense";
CityArray[6] = "kolding";

NewArray = new Array();

for (var i = 0; i<CityArray.length; i++) {
if(i==0){
    NewArray.push(CityArray[i])
}

for (var j = 0; j<NewArray.length; j++) {
   
if(CityArray[i]<>NewArray[j]){
   
}else{
NewArray.push(CityArray[i])
}
    }
    }
   
CityArray.sort()
trace(CityArray);
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 10:18 #5
Har du et script eller noget - eller har du tid til at lave et lille eksempel?
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 10:20 #6
if(CityArray[i]==NewArray[j]){
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 10:42 #7
er der nogle der kender CityArray.sort compareFunction - er det måske noget der kan bruges?
Avatar billede barklund Nybegynder
13. marts 2006 - 10:46 #8
Hvis dine data altid er sorterede, kan du jo bare overføre elementer til et nyt array, hvis ikke det nuværende element er magen til det øverste i det nye array. Er det ikke sorterede, kan du søge efter det gamle navn i det nye array med en søgningsfunktion.

Og jeg vil anbefale bogen http://globe.dk/?action=detail&vare=FG227-7, som faktisk indeholder en funktion til at fjerne dupletter fra et array - sammen med en grund forklaring af både arrays, funktioner og meget andet :)

--
Morten Barklund
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 10:48 #9
jeg sidder faktisk med din bogen foran mig :)
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 10:53 #10
afsnit 7.9 men den spit bare alle felter i array så :(
Avatar billede barklund Nybegynder
13. marts 2006 - 11:06 #11
Ehm? Splitter hvordan?
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 11:22 #12
jeg fatter det ikke - så nu er jeg gået tilbage til mit første forsøg..
Avatar billede barklund Nybegynder
13. marts 2006 - 11:38 #13
Jamen kan du ikke bare indsætte funktionen - og så bruge den som:

var NewArray = unik(CityArray);

(kan ikke lige huske funktionens navn)-

? :)

--
Morten Barklund
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 11:43 #14
dette er dit script, skulle den ikke gøre arbejdet? men at finde dem der er ens
?
CityArray = new Array();

CityArray[0] = "kbh";
CityArray[1] = "kbh";
CityArray[2] = "vejle";
CityArray[3] = "odense";
CityArray[4] = "odense";
CityArray[5] = "odense";
CityArray[6] = "kolding";

unik(CityArray);

function unik(City){

    var i, resultat = new Array();
    for (var i = 0; i<City.length; i++) {
        if(!find(resultat,City[i])){
           
            resultat.push(City[i])
           
        }
        }
        trace(resultat)
    }
Avatar billede barklund Nybegynder
13. marts 2006 - 11:50 #15
Har du også indsat funktionen find(), som den anden funktion jo benytter sig af? Ellers virker det jo ikke :)
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 11:56 #16
hehe - det var der fejlen lå - mange mange tak for hjælpen :)
læg et svar..
Avatar billede jacobs1 Nybegynder
13. marts 2006 - 11:56 #17
CityArray = new Array();

CityArray[0] = "kbh";
CityArray[1] = "kbh";
CityArray[2] = "vejle";
CityArray[3] = "odense";
CityArray[4] = "odense";
CityArray[5] = "odense";
CityArray[6] = "kolding";
CityArray[7] = "kolding";
CityArray[8] = "Svenborg";

function find(City, envardi){
    var i;
    for (i = 0; i<City.length; i++) {
       
        if(City[i]==envardi){
            return true;
        }
        }
}

function unik(City){

    var i, resultat = new Array();
    for (var i = 0; i<City.length; i++) {
        if(!find(resultat,City[i])){
           
            resultat.push(City[i])
           
        }
        }
        trace(resultat)
    }
unik(CityArray);
Avatar billede barklund Nybegynder
13. marts 2006 - 12:19 #18
Oki :)
Avatar billede barklund Nybegynder
13. marts 2006 - 12:24 #19
Tark for points :)
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