Avatar billede koch Nybegynder
02. november 2003 - 14:16 Der er 17 kommentarer og
1 løsning

Kalde info fra array

Jeg har et array i en ekstern fil, array.js.
obj=new array
obj[0]="data1*data2*data3*data4"
obj[1]="data1*data2*data3*data4"
obj[2]="data1*data2*data3*data4"
obj[3]="data1*data2*data3*data4"


I filen hvor jeg skal bruge mit array vil jeg gerne have lavet en funktion der deler de data der står i hvert obj ved hver stjerne. Det skal fungere sådan at jeg for hvert obj kan kalde f.eks. obj[0].opdel[0](jeg ved ikke om dette er syntaksen for at få info fra et array)hvor jeg så vil få værdien data1 for obj[0].
Mit forslag:
    function opdel(){
      for(i in obj){opdel=obj[i].split("*")}
      }   

I mit hovede forstås dette som:
for hver obj i arrayet bliver der delt op ved hver stjerne og dataene gemmes i opdel. Der oprettes et nyt array opdel: opdel[0]=data1, opdel[1]=data2 osv.

Jeg kan så efterfølgende skrive f.eks.
<script language="javascript">
document.write("obj[0].opdel[0]");
</script> 

og der vil stå data1?
Avatar billede dawin_dk Nybegynder
02. november 2003 - 14:21 #1
du burde kunne kalde:

obj[0].split('*')[0]
Avatar billede koch Nybegynder
02. november 2003 - 14:32 #2
så står der bare obj[0].split('*')[0]
Avatar billede koch Nybegynder
02. november 2003 - 14:35 #3
jeg har fundet ud af det.
document.write(""obj[0].split('*')"")[0];
Avatar billede dawin_dk Nybegynder
02. november 2003 - 14:39 #4
måske fordi du mere skal lave det sårn her:

document.write(obj[0].split('*')[0]);
Avatar billede koch Nybegynder
02. november 2003 - 14:41 #5
jeg  mente før document.write(""+obj[0].split('*')[0]+"");
Avatar billede dawin_dk Nybegynder
02. november 2003 - 14:46 #6
der skal du bare have dit array defineret ?
Avatar billede koch Nybegynder
02. november 2003 - 16:07 #7
for lige at vende tilbage til mit egentlige problem ;o)
Jeg vil gerne benytte funktionen fordi jeg senere også skal bruge den. Skulle følgende ikke virke?

    function opdelobj(){
    for (i in obj) {opdel=obj[i].split("*")}
    }

Og skulle det nu ikke bare være muligt at skrive
document.write(""+obj[0].opdel[0]+"");
Avatar billede dawin_dk Nybegynder
02. november 2003 - 16:12 #8
nej .. det kræver at du laver det som en propery på de enkelte elementer og tilknytter til dem ... og det er langt mere besværligt end gavnligt...

har du evt overvejet bare at smide et array ind i din value eller lave et flerdimensionelt array ?

obj[1,3] = 'tekst'

eller

obj[1] = array('asdfasdf','sadfsdf','sadfsdf');

(er ik sikker på sidste er korrekt syntax, men hvis det er kan det nemt findes....)
Avatar billede olebole Juniormester
02. november 2003 - 17:46 #9
<ole>

var newObj = new Array();
for (i=0; i<obj.length; i++) {
  newObj.push( obj[i].split("*") );
}

document.write( newObj[1][2] );

Så har du den rigtige syntaks for et flerdimensionelt array i JS  :)

/mvh
</bole>
Avatar billede olebole Juniormester
02. november 2003 - 17:46 #10
... hvilket vel var et svar  :)
Avatar billede koch Nybegynder
02. november 2003 - 18:31 #11
Jeg har et par spørgsmål til det flerdimensionelle array.
Jeg er ikke med på hvorfor det er flerdimensionelt! Er der ikke bare oprettet et nyt array til dataene i obj-arrayet efter de er delt ved *?

Hvad gør push?

Hvorfor er betingelsen i=0 nødvendig?
Skal newObj.push( obj[i].split("*") ); ikke bare udføres når i er mindre end eller lig med obj.lenght;?
Avatar billede olebole Juniormester
02. november 2003 - 18:39 #12
1. Jo - og det kaldes et flerdimensionelt array. Har du prøvet at regne med komplekse tal eller andre former for matrix-opbygninger, forstår du umiddelbart, hvorfor de kaldes flerdimensionale.

2. 'ARRAY.push(STRENG)' indsætter strengen som sidste element i array'et

3. Det forstår jeg ikke ... det er vist præcis, hvad jeg har skrevet  :)
/mvh
Avatar billede koch Nybegynder
02. november 2003 - 19:01 #13
1. Nej, men ok.
2. Er stadig ikke helt med! Der oprettes et array() med de data som der er taget fra obj-arrayet(delt ved *), jeg er derfor ikke med på hvorfor push er nødvendig?!
3. Som jeg læser det står der: når i er lig 0 og i er mindre end obj.length. Hvorfor skal i=0 med, er det ikke inkluderet i i<obj.length?
Jeg troede at mindre end eller lig med skulle stå som i<=obj.length, ellers vil den vel altid kun nå til i-1?

Det er en meget stor hjælp at få en forklaring på det, tak for det.
Avatar billede olebole Juniormester
02. november 2003 - 19:04 #14
Jeg tror, du bør købe en bog/hæfte om elementært JavaScript. Det tjener vist ikke noget formål, vi går videre her. Det vil kræve en større 'dansk stil'  :)
/mvh
Avatar billede koch Nybegynder
02. november 2003 - 19:05 #15
ok.
Avatar billede olebole Juniormester
03. november 2003 - 14:06 #16
Ehhhh .... hvorfor afviser du? Du har da fået fuldt korrekt svar på dit spørgsmål - og det må vel være nok.
Du bad ikke i dit spørgsmål om et længere kursus i elementær scripting.
Avatar billede koch Nybegynder
09. november 2003 - 17:19 #17
Da jeg ikke forstår svaret ved jeg ikke om det er det svar jeg søger. Jeg benytter ikke scripts som jeg ikke forstår helt ;o) Hvis du ikke mener det er acceptabelt, så giver jeg gerne pointene, det betyder ikke så meget.
Avatar billede koch Nybegynder
11. november 2003 - 21:29 #18
Jeg går ud fra at ovenstående er ok.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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