Avatar billede soelle Nybegynder
25. maj 2004 - 14:39 Der er 17 kommentarer og
1 løsning

trække noget fra Array

Jeg har et Array med alfabetet i. Nu vil gerne have at hvis en condition er opfyldt så skal den trække et bogstav fra det Array. Hvordan går jeg det?

Har prøvet med:

BogstavArray -"a"

med det virker ikke.
Avatar billede barklund Nybegynder
25. maj 2004 - 15:04 #1
Hm, noget i stil med:

alfabet = "abcdefhijklmnopqrstuvwxyz";
bogstaver = alfabet.split("");
function sletBogstav(bogstav) {
    if (alfabet.indexOf(bogstav) != -1) {
        bogstaver.splice(alfabet.indexOf(bogstav)-1, 0);
        alfabet = alfabet.substring(0,alfabet.indexOf(bogstav)-1)+alfabet.substring(alfabet.indexOf(bogstav));
    }
}

Så kan du slette bogstaver med sletBogstav("a");
Avatar billede mike_mike Nybegynder
25. maj 2004 - 15:09 #2
Ehm tror du må uddybe dit problem lidt - ikke mindst hvad program du programmerer i? Og kan du skrive lidt nærmere om hvad det er for en condition så man får et indtryk af problemet.

Generelt:
lad os sige at dit alfabet er gemt i arrayen $alfabet hvor hver punkt i arrayen indeholder ét bogstav. Normalt vil man henvise til de enkelte punkter således

$alfabet[0] (er lig med "a")
$alfabet[1] (er lig med "b")

osv.

tallet inden i klammen angiver altså hvilket punkt i din array du vil have fat i. Du kan også putte en variabel derind f.eks.

$alfabet[$i]

hvor $i så varierer. Læg mærke til, det er her mange laver fejl, at første punkt er 0 og ikke 1.

Hvis jeg skal skyde fra hoften i dit tilfælde ville jeg prøve

BogstavArray[0]
Avatar billede soelle Nybegynder
25. maj 2004 - 15:22 #3
OK. Jeg programmere i MX 2004. Min kode er her:

var bogstavArray = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "v", "y", "æ", "ø", "å");

randomBogstav = bogstavArray[random(bogstavArray.length)];
if (randomBogstav == sidsteBogstav) {
    --- HER VIL JEG GERNE FJERNE BOGSTAVET ---
gotoAndPlay(300);
}
Avatar billede barklund Nybegynder
25. maj 2004 - 15:53 #4
Så er det bare

randomIndex = random(bogstavArray.length);
randomBogstav = bogstavArray[randomIndex];
if (randomBogstav == sidsteBogstav) {
    bogstavArray.splice(randomIndex, 1)
    gotoAndPlay(300);
}

// Morten Barklund

Og til mike_mike, når det er oprettet i Flash kategorien er ActionScript så ikke et godt bud på et programmeringssprog? :)
Avatar billede soelle Nybegynder
25. maj 2004 - 15:54 #5
Barklunds forsøg virker ikke.
Avatar billede soelle Nybegynder
25. maj 2004 - 15:55 #6
altså det første... jeg prøver lige nr. 2
Avatar billede soelle Nybegynder
25. maj 2004 - 20:58 #7
Det virker sådan set... nu er mit problem så at når den køre igennem scriptet igen bliver bogstavArray jo defineret igen og så kommer bogstav jo tilbage. Hvordan løser jeg det? Altså Array skal jo defineres igen men bare uden det bogstav der har været.
Avatar billede soelle Nybegynder
25. maj 2004 - 22:37 #8
Har fundet ud af det. Smider du et svar til point, Barklund?
Avatar billede barklund Nybegynder
25. maj 2004 - 23:01 #9
Det kan du tro :)
Avatar billede barklund Nybegynder
26. maj 2004 - 09:58 #10
Tark for points :)
Avatar billede soelle Nybegynder
26. maj 2004 - 10:03 #11
Det var så lidt... vil du prøve at forklare randomIndex scriptet?
Avatar billede barklund Nybegynder
26. maj 2004 - 10:07 #12
Den gør jo det samme som dit. Jeg gemmer bare det random index som vælges i array'et inden jeg finder det tilfældige bogstav. Så bruges random index til bagefter et slette det pågældende bogstav via splice() metoden.
Avatar billede soelle Nybegynder
26. maj 2004 - 10:18 #13
jeg troede bare at man kun kunne bruge splice med et tal... og hvordan kan det være at den i to forskellige random rammer det samme bogstav?
Avatar billede barklund Nybegynder
26. maj 2004 - 10:35 #14
Det er jo random.

Chancen for at der kommer 1 efter fulgt af 5 er lige så stor som chancen for at der kommer 1 efterfulgt af 1.

Chancen for at der kommer 1 efterfulgt af noget andet end 1 er selvfølgelig større end chancen for at der kommer 1 efterfulgt af 1.
Avatar billede soelle Nybegynder
26. maj 2004 - 10:48 #15
Der tabte du sgu mig... Men det virker og det er jo hovedsagen.
Avatar billede soelle Nybegynder
30. maj 2004 - 11:27 #16
var tegningArray = new Array("ambulance_mc", "ananas_mc", "ettal_mc");

randomtegning = tegningArray[random(tegningArray.length)];

tegning_holder1_mc.attachMovie(randomtegning, randomtegning+"1", 2);

randomtegning = tegningArray[random(tegningArray.length)];
randomTegIndex = random(tegningArray.length);
randomtegning = tegningArray[randomTegIndex];
tegningArray.splice(randomTegIndex, 1);

tegning_holder2_mc.attachMovie(randomtegning,randomtegning+"2",2);

Når jeg tracer mit array kan jeg se at det er rigtigt men min randomtegning bliver alligevel den samme nogen gange, selvom tegningen er væk fra mit Array. Hvorfor det?
Avatar billede barklund Nybegynder
31. maj 2004 - 15:10 #17
Hvad er det helt præcis du vil - for jeg mistænker at du er grumt galt på den?

Fortæl hvad du vil opnå, så tager vi den derfra :)
Avatar billede soelle Nybegynder
01. juni 2004 - 08:31 #18
Jeg har en scene med (indtil videre) 2 movieclips i (tegning_holder). Deri vil jeg attache randomtegninger fra tegningArray. MEN den samme tegning må ikke komme 2 gange. Derfor splicer jeg, som du viste mig i det første script. Der kommer i alt 6 teningholdere og 40 tegninger i tegningArray, men jeg har lavet det med noget mindre indtil det virker.
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