Toon posts:

[js]drie dimensionaal Array

Pagina: 1
Acties:

Verwijderd

Topicstarter
hoe maak ik een driedimensionaal array aan in JS?

Ik probeer:
var afmeting = new Array();
afmeting[] = new Array();
afmeting[][] = new Array();

Maar dat lijkt niet te werken.

Ik wil hem hierna in een keer vullen met waarden uit de database:

$javascript .= "afmeting[$bladdikte][$lengte][$breedte] = '$prijs';\n";

Ik heb ook
var afmeting = new Array(new Array(new Array()));
geprobeerd, helaas ook zonder succes. Of moet je er meteen een waarde inzetten?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Javascript hoort bij de experts van W&G :) maar dat zou je onderhad toch wel es moeten weten?

Verwijderd

Topicstarter
damn, had ik hem bij de verkeerde gepost? Shit, verkeerd geklikt. Excuses. :)

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 21-08 19:07

dominic

will code for food

array[i,i]

[ Voor 11% gewijzigd door dominic op 13-06-2003 09:58 ]

Download my music on SoundCloud


Verwijderd

nav = new Array();
nav[0] = new Array();
nav[0][0] = new Array();
nav[0][0][0] = new Array('aap', 'noot', 'mies');
etc..

Verwijderd

Topicstarter
ok, dus wel een waarde erin. Ga ik proberen. Bedankt!

Verwijderd

Topicstarter
Ik heb het volgende:
code:
1
2
3
4
5
afmeting = new Array();
afmeting[0] = new Array();
afmeting[0][0] = new Array();
afmeting[0][0][0] = new Array();
afmeting[20][300][400] = '20.00';


Ik krijg nu de melding afmeting.20.300 is leeg of geen object.?? zie ik iets doms over het hoofd?

Verwijderd

Als je refereert aan afmeting.20.300 , dan gaat dat volgens mij niet werken nej.

alert(afmeting[20][300]);

Verwijderd

Topicstarter
Daar refereer ik toch ook niet aan? Ik gebruik het net zoals in die alert.

Verwijderd

Ja, dom. Je moet natuurlijk wel afmeting[20][300] een array hebben gemaakt _voordat_ je daar een array in kan zetten.

Verwijderd

Logisch dat 't niet werkt je array is namelijk 0 bij 0 bij 0 ipv 20 bij 300 bij 400:
Dit werkt wel
code:
1
2
3
4
5
6
afmeting = new Array();
afmeting[20] = new Array();
afmeting[20][300] = new Array();
afmeting[20][300][400] = new Array();
afmeting[20][300][400] = '20.00';
alert(afmeting[20][300][400])

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Anders moet je ook ff kijken naar:

http://www.his.com/~geoworks/MultiD.htm

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Wat hier overal gebeurt is dat er wel een 3 dimensionale array wordt gemaakt, maar slechts 1 array heeft meerdere elementen.
Zoiets gaat beter werken (dit is zomaar uit de losse pols geprogd, en dus absoluut niet getest):
JavaScript:
1
2
3
4
5
6
7
8
9
10
xSize = 20;
ySize = 20;
zSize = 20;
afmeting = new Array(xSize);
for (int i =0;i<xSize;i++){
  afmeting[i]=new Array(ySize);
  for (int j =0;j<ySize;j++){
    afmeting[i][j]=new Array(zSize);
  }
}

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Janoz schreef op 13 June 2003 @ 11:21:
JavaScript:
1
2
3
4
5
6
7
8
9
10
xSize = 20;
ySize = 20;
zSize = 20;
afmeting = new Array(xSize);
for (int i =0;i<xSize;i++){
  afmeting[i]=new Array(ySize);
  for (int j =0;j<ySize;j++){
    afmeting[i][j]=new Array(zSize);
  }
}
Dat werkt in JS beter zonder de INT in de for-next :)

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

't kan ook "snel" met:

JavaScript:
1
2
3
4
5
var arr = [
   [[ ... ], [ ... ], [ ... ]],
   [[ ... ], [ ... ], [ ... ]],
   [[ ... ], [ ... ], [ ... ]]
]


Hoewel dat niet werkt als je het vult vanuit een for loopje natuurlijk.
Tip, misschien is het handig om eens te kijken naar Objecten in JS? Iets ala:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function Blad(dikte, lengte, breedte, prijs) {
   this.dikte = dikte;
   this.lengte = lengte;
   this.breedte = breedte;
   this.prijs = prijs;
}

// evt object specifieke functies etc.
Blad.prototype.doeWat = function(a, b, c, d) {
   // ...
}

// en dan met
blad = new Blad($bladdikte,  $lengte, $breedte, $prijs);

// werkt ala:
alert(blad.prijs);
// en/of
blad.doeWat('fiets')


Vandaag en over een maand weet je misschien nog wat je code doet, maar over een jaar ofzo heb je geen idee meer waarvoor je die 3 dimensionale array gebruikt hebt. Objecten bieden een stuk meer overzicht en flixibiliteit. De kans op het maken van fouten is kleiner, en het is leuker :)

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Topicstarter
Volgens mij maak ik ergens een denk fout. Ik zal even uitleggen wat ik wil bereiken.

Objecten uit de database hebben een verschillende hoogte, breedte, lengte. Deze kan ik zo uit de database allemaal ophalen. Nu wil ik zonder submitten van een form deze 3 variabelen aan elkaar linken.

Dus een bezoeker kiest eerst een hoogte, dan komen de beschikbare breedtes in een dropdownmenu te staan en daar kiest hij dan een breedte. Etc. Eigenlijk net zoals op www.autotrader.nl bij merk/type, alleen dan met 3 variabelen.

  • koffercomputer
  • Registratie: Oktober 2000
  • Laatst online: 19-08 09:16
Da's toch een kwestie van de gegevens uit de database ophalen als een van de opties is geselecteerd? Een event dat een databasequery doet, of zie ik dat verkeerd? Om nu eerst alle info op te gaan halen terwijl je misschien 90% niet gebruikt is zonde van de bandbreedte.

edit:
Oeps, die site die de TS als voorbeeld geeft maakt gebruik van JSP, dat werkt nét iets anders

[ Voor 19% gewijzigd door koffercomputer op 13-06-2003 12:00 ]

Ik heb het opgegeven om nog correct Nederlands te blijven typen. 22.10.02


Verwijderd

Topicstarter
Maar wel mooier.
Pagina: 1