Avatar billede kalleballe Nybegynder
10. september 2002 - 10:48 Der er 8 kommentarer og
1 løsning

flash mx og XML ting

Jeg har et xml dokument med div poster.

så har jeg lidt action script som ser således ud:

news = "";
        for (i=0; i<articles.length; i++) {
        data2[i] = articles[i];
        // makes new array with data from articles[i]
    }
    for (f=0; f<data2.length; f++) {
        if (data2[f].de != "ja") {
            data2.splice(f, 1);
        }
    }
    for (f=0; f<data2.length; f++) {
        news += data2[f].pr+"<br>";
        news += data2[f].ma+"<br>";
        news += data2[f].wi+"<br>";
        news += data2[f].pr+"<br>";
        news += data2[f].de+"<br>";
        news += data2[f].pa+"<br>";
        news += data2[f].pl+"<br>";
        news += data2[f].fu+"<br>";
        news += data2[f].ph+"<br>";
    }
}


Jeg har lavet et array der indholder oplysningerne fra mit xml dokument, - arrayet hedder articles.

Jeg vil så gerne lave et udtræk af dette array og lave et nyt array der består af de ting der er valgt ud i dette tilfælde:

alle de poster hvor data2[f].de != "ja"

Nå jeg så gør det med data2.splice(f, 1);

virker det også sådan nogenlunde, - dog er det som om der kommer en ekstra post med, en post der ikke opfylder betingelsen.

news er bare et text felt.

Spørgsmålet er kort og godt:

er der en bedre måde at danne et nyt array ud fra et andet, - og jeg vil jo gerne undgå at der er tomme poster så arrayet skal altså trækkes sammen..


vh

KalleBalle
Avatar billede barklund Nybegynder
10. september 2002 - 11:30 #1
Kunne du ikke nøjes med at fange de rigtige poster i første gennemløb?

for (i=0; i<articles.length; i++) {
    if (articles[i].de != "ja") {
        data2.push(articles[i]);
    }
}

Årsagen er at du i dit gennemløb slicer index i ud og så går vi til i+1, men så har du jo sprunget den over, som før var i+1 og nu er i...
Avatar billede kalleballe Nybegynder
10. september 2002 - 11:34 #2
tak for svaret jeg ser lige på det ;-)
Avatar billede kalleballe Nybegynder
10. september 2002 - 11:50 #3
Hm, - den finder de første 2 poster fint, - men så kommer der ikke flere selv om betingelsen er opfyldt.....

Mht. årsagen...... hvad er så løsningen??

vh

KalleBalle
Avatar billede kalleballe Nybegynder
10. september 2002 - 11:59 #4
jeg tror at jeg simpelt hen testede for hurtigt, - den havde nok ikke nået at læse hele dokumentet ind ;-)
Avatar billede kalleballe Nybegynder
10. september 2002 - 12:16 #5
Okay det var ikke det.

Det der sker er at så snart betingelsen 'articles[i].de != "ja"' er false, altså et 'ja' så stopper den.

Så hvis post 3 har et <de>ja</de> så får jeg post 1 og 2.

??
Avatar billede kalleballe Nybegynder
10. september 2002 - 12:27 #6
Okay, - det her virker :

for (i=0; i<articles.length; i++) {
        if (articles[i].de != "ja") {
            data2.push(articles[i]);
        }
    }
    for (i=0; i<data2.length; i++) {
        _root.news += data2[i].pr+"<br>";
        _root.news += data2[i].de+"<br>";
    }


Og hvordan er det nu lige at jeg giver dig points barklund??
Avatar billede barklund Nybegynder
10. september 2002 - 13:04 #7
Når jeg lægger et svar... :o)

Dit sidste indlæg var da også præcis det jeg skrev? Kun 2 løkker... Eller tager jeg fejl...
Avatar billede kalleballe Nybegynder
10. september 2002 - 15:10 #8
Du har ret... jeg forstod bare ikke helt hvad du mente ;-)
Avatar billede barklund Nybegynder
10. september 2002 - 17:59 #9
Tak for point :o)
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