/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Javascript og arrays?
Fra : TH


Dato : 06-02-03 13:19

Hej,

Jeg har noget serverkode (asp) som skal laves om til clientkode
(javascript). Men har lige nogle spørgsmål.

Jeg skal have defineret et 2 dimensionalt array i Javascript....og kan ikke
hitte ud af det :)
Det jeg skal bruge er følgende:

var mArray=new Array;
mArray[0]=new Array("1","2","3")
mArray[1]=new Array("1","2","3")
mArray[2]=new Array("1","2","3")
mArray[3]=new Array("1","2","3")


Det er fint...men jeg behøver det dynamisk...Hvordan gør jeg begge
"dimensioner" dynamiske? Og hvordan så med "length" af dem?

Håber det giver mening :)

mvh
TH




---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.449 / Virus Database: 251 - Release Date: 27-01-2003



 
 
Lasse Reichstein Nie~ (06-02-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 06-02-03 15:31

"TH" <th@cogito.dk> writes:

> Jeg skal have defineret et 2 dimensionalt array i Javascript....og kan ikke
> hitte ud af det :)

Der er ikke noget der i sig selv hedder et et todimensionalt array i
Javascript. Det er bare et (etdimensionelt) array af arrays.

> Det jeg skal bruge er følgende:
>
> var mArray=new Array;
> mArray[0]=new Array("1","2","3")
> mArray[1]=new Array("1","2","3")
> mArray[2]=new Array("1","2","3")
> mArray[3]=new Array("1","2","3")

Det ser da fint ud.

> Det er fint...men jeg behøver det dynamisk...Hvordan gør jeg begge
> "dimensioner" dynamiske? Og hvordan så med "length" af dem?

Her er en funktion der laver og initialiserer et <fst>*<snd> array.

---
function toDimArray(fst,snd) {
var ar = new Array(fst); // eller bare: new Array()
for(var i=0;i<fst;i++) {
ar[i]=new Array(snd);
}
return ar;
}
---

Funktionen Array er lidt speciel. Hvis den får præcist et argument der
er et tal (typeof * = "number"), så laver den et array af den længde
initialiseret med værdien "undefined". Alle andre valg af argumenter
bliver til indhold af det nylavede array.


Længden af et array er afgjort af det største index der er sat.
Fx.
var ar=new Array();
ar[200]="foo";

Så vil ar.length være 201.

Derfor er det ikke nødvendigt at initialisere arrays med en længde
med mindre man senere bruger dem steder der forventer en længde
ud over de elementer der er sat (gav det mening?).

/L
--
Lasse Reichstein Nielsen - lrn@brics.dk
Ph.D. i datalogi søger stilling som software-udvikler i Øst- eller
Nordjylland. Curriculum Vitae: <URL:http://www.brics.dk/~lrn/cv.html>

TH (06-02-2003)
Kommentar
Fra : TH


Dato : 06-02-03 16:26

Hej,

"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
news:ptq5trag.fsf@hotpop.com...

> Længden af et array er afgjort af det største index der er sat.
> Fx.
> var ar=new Array();
> ar[200]="foo";
>
> Så vil ar.length være 201.
>
> Derfor er det ikke nødvendigt at initialisere arrays med en længde
> med mindre man senere bruger dem steder der forventer en længde
> ud over de elementer der er sat (gav det mening?).

jeps. Så ville jeg også kunne sige fx:

var ar=new Array();
ar[ar.length]=new Array()
ar[ar.length]=new Array()
ar[ar.length]=new Array()

Osv...

Men hvordan får jeg så længden af fx. ar[1] ? ar[1].length?

Lige et tillægsspørgsmål.
Lad os sige vi har:

var ar=new Array();
ar[0]=new Array(0,2,3)
ar[1]=new Array(1,4,8)
ar[2]=new Array(3,6,7)

Hvis jeg har fx. ar[x][1]=8
Hvordan finder jeg så ud af at x=1 ?? Findes der en funktion til dette i
Javascript? Eller skal man rode hele arrayet manuelt igennem?

takker,
/TH




/TH



---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.449 / Virus Database: 251 - Release Date: 27-01-2003



Lasse Reichstein Nie~ (06-02-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 06-02-03 17:49

"TH" <th@cogito.dk> writes:

> ar[ar.length]=new Array()

Der ville jeg nok foretrække

ar.push(new Array())

> Men hvordan får jeg så længden af fx. ar[1] ? ar[1].length?

Ja, det virker fint. Udtrykket ar[1] refererer til et array,
og du kan bruge alle

> Lige et tillægsspørgsmål.
> Lad os sige vi har:
>
> var ar=new Array();
> ar[0]=new Array(0,2,3)
> ar[1]=new Array(1,4,8)
> ar[2]=new Array(3,6,7)


> Hvis jeg har fx. ar[x][1]=8

Det skulle vist være ar[x][2] ?

> Hvordan finder jeg så ud af at x=1 ?? Findes der en funktion til dette i
> Javascript? Eller skal man rode hele arrayet manuelt igennem?

Jeg kender ikke til nogen funktion der gør det.

Du kan evt. bruge følgende til at finde noget i et array:

---
function arrayFind(ar,predicate) {
for(var i=0;i<ar.length;i++) {
if (predicate(ar[i])) return i;
}
return undefined; // eller -1 hvis det passer dig bedre
}
---
(Advarsel: utestet kode, kan indehodle tyrkfejl.)

Du kan så finde den du er ude efter som
---
arrayFind(ar,function(row){return row[2]==8;})
---

Man kan *mange* sjove ting med anonyme funktioner som denne. Her er det
en simpel prædikatfunktion, altså en der bare returnerer en boolean.


/L 'a determined functional programmer can program functionally in any
language'
--
Lasse Reichstein Nielsen - lrn@brics.dk
Ph.D. i datalogi søger stilling som software-udvikler i Øst- eller
Nordjylland. Curriculum Vitae: <URL:http://www.brics.dk/~lrn/cv.html>

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste