/ 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
Multi-dimension arrays
Fra : A B C


Dato : 12-05-06 11:59

Jeg har et problem med multi-dimension arrays. Jeg kan finde antal
værdier i første dimension, men ikke anden dimension! Min kode er:

var w = new Array();
w[0] = new Array();
w[0]["personid"] = 4512;
w[0]["first_name"] = "Bobby";
w[0]["last_name"] = "Jones";
w[0]["eventID"] = 3712;

document.write("First level: "+ w.length);
document.write("<p>");
document.write("Second level: "+ w[0].length);

Første level siger korrekt 1, men anden level siger 0 i stedet for 4!
Hvordan kan det være?

Og hvad er løsningen?!


 
 
Lasse Reichstein Nie~ (12-05-2006)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 12-05-06 17:48

A B C <pub1@hverdag.dk> writes:

> Jeg har et problem med multi-dimension arrays. Jeg kan finde antal
> værdier i første dimension, men ikke anden dimension! Min kode er:
>
> var w = new Array();
> w[0] = new Array();
> w[0]["personid"] = 4512;
> w[0]["first_name"] = "Bobby";
> w[0]["last_name"] = "Jones";
> w[0]["eventID"] = 3712;

Arrays er indexeret via tal, ikke strenge. Et Javascript array er også
et objekt, så du kan lave andre egenskaber end bare array-værdierne,
men de har ingen indflydelse på længden.

Du kunne lige så godt skrive
w[0] = new Object();
for du bruger ikke objektet som et array.

> document.write("Second level: "+ w[0].length);
>
> Første level siger korrekt 1, men anden level siger 0 i stedet for 4!
> Hvordan kan det være?

Det er fordi det er sådan det er defineret.

Hvis du havde skrevet
w[0][42] = "arglebargle"
så ville w[0].length == 43. Altså, længden er ikke antallet af
værdier der er sat, men en mere end det største array-indeks der
er sat. Hvilken værdi skulle det have i dit eksempel?

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

A B C (13-05-2006)
Kommentar
Fra : A B C


Dato : 13-05-06 14:46

>> var w = new Array();
>> w[0] = new Array();
>> w[0]["personid"] = 4512;
>> w[0]["first_name"] = "Bobby";
>> w[0]["last_name"] = "Jones";
>> w[0]["eventID"] = 3712;
>
>Du kunne lige så godt skrive
> w[0] = new Object();
>for du bruger ikke objektet som et array.

Nej ikke lige i dette tilfælde, det er jo rigtig nok. Og jeg kom jo
også i tanke om at jeg her ikke havde brug for at vide længden, da jeg
jo alligevel skal referere til værdierne via et navn!

Så jeg kan kun bruge .length når det er indekseret med tal - I got it.

>Hvis du havde skrevet
> w[0][42] = "arglebargle"
>så ville w[0].length == 43. Altså, længden er ikke antallet af
>værdier der er sat, men en mere end det største array-indeks der
>er sat. Hvilken værdi skulle det have i dit eksempel?

Jeg gik ud fra min PHP tankegang som kan tælle antal værdier i arrays
uanset, men nu kan jeg godt se (og forstå) at Javascript fungerer lidt
anderledes. Men det ødelægger nu ikke min generic PHP array -> JS
array/objekt converter, så ingen problemer i det.

Tak for forklaringen.


Søg
Reklame
Statistik
Spørgsmål : 177553
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste