Tableaux javascript

djoulch Messages postés 32 Statut Membre -  
djoulch Messages postés 32 Statut Membre -
Hello

Pour un tableau 2 dim, laquelle de ces attibutions est juste ?

tableau[0,0] = 120
tableau(0,0) = 120
tableau[0][0] = 120
tableau(0)(0) = 120

Parce que je trouve un peu de tout sur le net concernant les tableaux multidim et franchement, ca marche pas vraiment... Merci d'avance !

6 réponses

djoulch Messages postés 32 Statut Membre
 
Et par la meme occasion, l'initialisation du tableau ci-dessous est-elle aussi correcte ?

tableau = new Array(11,3)

Pour 11 lignes et 3 colonnes.
0
Marden Messages postés 1075 Statut Membre 210
 
Bonjour djoulch,

J'ai cru comprendre, à l'usage, qu'en JS, les tableaux ... n'existaient pas vraiment, en tous les cas, comme dans les autres langages. Tout a l'air de se passer, comme dans la plupart des langages interprétés, comme si les différents élements d'un "tableau" étaient des variables indépendantes (non rangées à des emplacements successifs) dont le type de contenu peut même varier d'un élément à l'autre (pas recommandé !), et même pour un même élément. En pratique, on peut difficilement utiliser un tableau comme argument d'une fonction.

Essaie aussi de retrouver les explications de notre ami Php sur le sujet, ami qui se fait plutôt rare sur ce forum !!!

Quoi qu'il en soit, on peut créer des pseudo-tableaux comme suit :

var tab = new Array() ; // déclaration d'un tableau à une dimension
avec nombre d'éléments indéterminé !
var tab1 = new Array(10) ;//avec 10 éléments, non initialisés
var tab2 = new Array("chou","carotte","navet"); // avec 3 éléments de type chaîne, initialisés.

Pour utiliser ces éléments, on peut utiliser une constante ou une variable contenant une valeur numérique :
... tab[0] ...
i = 2 ; .... tab[i] ... équivalent à tab[2]

Pour une table à 2 dimensions :
var TAB = new Array() ; // 1er niveau d'indice
TAB[0] = new Array() ;
TAB[1] = new Array() ; // ... etc
on peut aussi initialiser les valeurs de ces sous-tableaux :
var TAB = new Array() ;
TAB[0] = new Array(1,2,3) ;
TAB[1] = new Array("chou","carotte","navet",4,5,6); // ... etc

J'ai proposé un bout de code, permettant de voir comment çà fonctionne. Tu peux faire des essais en modifiant certaines valeurs d'indices, avec le risque d'erreurs, mais çà aussi, çà permet d'apprendre !!!

http://www.commentcamarche.com/forum/affich.php3?cat=0&ID=223881&page=1
0
ipl Messages postés 5738 Statut Contributeur sécurité 585
 
Bonjour djoulch, Marden, bonjour à tous,

Pour moi, la notation correcte est ssm[1][3]=" Rocket_88"; (avec des crochets donc)

Pour initialiser le nombre de lignes et de colonnes, je ne sais pas... je ne m'y prends pas comme çà pour initialiser... je le fais à partir des tableaux à une dimension qui correspondent aux entêtes :
/* --------------- création des tableaux ------------------ */
menup=new Array();
ssm=new Array();
adre=new Array();
/* --------------- remplissage tableau principal --------------- */
menup[0]=" Musique MID";
menup[1]=" Musique MP3";
menup[2]=" Musique WAV";
menup[3]=" Musique autres";
/* --------------- agrandissement des tableaux secondaires ----- */
TMAX=menup.length;
for (var i=0;i<TMAX;i++) ssm[i]=new Array();
for (var i=0;i<TMAX;i++) adre[i]=new Array();
/* --------------- remplissage des tableaux secondaires -------- */
ssm[0][0]=" Chatanooga Choo Choo";
ssm[0][1]=" The Girl From Ipanema";
ssm[0][2]=" I Wanna...";
ssm[0][3]=" Maria Elena";
ssm[0][4]=" Smoke Gets In Your Eyes";
ssm[1][0]=" Clementi";
ssm[1][1]=" Ghost";
etc.

HTH

@12C4 ... In medio stat virtus ...
Ipl
0
Marden Messages postés 1075 Statut Membre 210
 
Je ne pense pas qu'il y ait d'incompatibilité dans nos propos. Personnellement, j'utilise souvent la forme suivante :

var tableau = new Array() ;
var compteur = 0 ;
addLine(val00, val01, val02, ...) ;
addLine(val10, val11, val12, ...) ;
addLine(val20, val21, val22, ...) ;
.............................

// avec la fonction :

function addLine (v0,v1,v2,...) {
tableau[compteur++] = new Array(v0,v1,v2,...) ,
}

// ou la variante :

function addLine () {
tableau[compteur] = new Array() ;
for ( i=0; i< arguments.length ; i++) {
tableau[compteur][i] = arguments[i]
}
compteur++ ;
}

[à noter que "tableau" et "compteur" sont des variables globales]
0
djoulch Messages postés 32 Statut Membre
 
Mais dans les indices, tu peux mettre sans autre des variables plutot que des chiffres, style

tableau [var1][var2]

au moment d'utiliser le tableau ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djoulch Messages postés 32 Statut Membre
 
Arf, j'deviens franc fou, y'a rien qui fonctionne... Si quelqu'un peut tester mon code si dessous pour trouver l'erreur, je lui en serais monstre reconnaissant... Le but étant que dans la case prix doit s'afficher le prix correspondant dans un des deux tableaux, déterminé par les switchs...

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<table width="75%" border="0">
<tr>
<td>Nom skieur</td>
<td>Prénom skieur</td>
<td>Année naissance</td>
<td>Type abonnement</td>
<td>Période</td>
<td>Début abonnement</td>
<td>Fin abonnement</td>
<td>Nombre de jours</td>
<td>Prix</td>
</tr>
<tr>
<td>
<INPUT TYPE=Text SIZE=12 NAME="nomSkieur1">
</td>
<td>
<INPUT TYPE=Text SIZE=12 NAME="prenomSkieur1">
</td>
<td>
<INPUT TYPE=Text SIZE=4 NAME="naissanceSkieur1">
</td>
<td>
<SELECT NAME="abonnement1" ONEKEYUP="prix();">
<OPTION VALUE=0>Adulte</OPTION>
<OPTION VALUE=1>Etudiant</OPTION>
<OPTION VALUE=2>Enfant</OPTION>
<OPTION VALUE=3>Retraité</OPTION>
</SELECT>
</td>
<td>
<SELECT NAME="periode1" ONEKEYUP="prix();">
<OPTION VALUE=0>1</OPTION>
<OPTION VALUE=1>2</OPTION>
<OPTION VALUE=2>3</OPTION>
<OPTION VALUE=3>4</OPTION>
<OPTION VALUE=4>5</OPTION>
</SELECT>
</td>
<td>
<INPUT TYPE=Text SIZE=11 NAME="debutSkieur1">
</td>
<td>
<INPUT TYPE=Text SIZE=11 NAME="finSkieur1">
</td>
<td>
<SELECT NAME="nbreJour1" ONEKEYUP="prix();">
<OPTION VALUE=0>4</OPTION>
<OPTION VALUE=1>5</OPTION>
<OPTION VALUE=2>6</OPTION>
<OPTION VALUE=3>7</OPTION>
<OPTION VALUE=4>8</OPTION>
<OPTION VALUE=5>9</OPTION>
<OPTION VALUE=6>10</OPTION>
<OPTION VALUE=7>11</OPTION>
<OPTION VALUE=8>12</OPTION>
<OPTION VALUE=9>13</OPTION>
<OPTION VALUE=10>14</OPTION>
</SELECT>
</td>
<td>
<INPUT TYPE=Text SIZE=7 NAME="prix1" READONLY>
</td>
</table>
<SCRIPT LANGUAGE="javascript1.2" type="text/JavaScript" >

function prix()
{
var typeAbo1 = document.formulaire.abonnement1.value;
var nbre1 = document.formulaire.nbreJour1.value;
var periode1 = document.formulaire.periode1.value;
var t1;

tableauHaute = new Array();
tableauHaute [0][0] = 145;
tableauHaute [1][0] = 177;
tableauHaute [2][0] = 199;
tableauHaute [3][0] = 209;
tableauHaute [4][0] = 219;
tableauHaute [5][0] = 259;
tableauHaute [6][0] = 278;
tableauHaute [7][0] = 296;
tableauHaute [8][0] = 313;
tableauHaute [9][0] = 330;
tableauHaute [10][0] = 346;
tableauHaute [0][1] = 123;
tableauHaute [1][1] = 150;
tableauHaute [2][1] = 169;
tableauHaute [3][1] = 179;
tableauHaute [4][1] = 189;
tableauHaute [5][1] = 220;
tableauHaute [6][1] = 236;
tableauHaute [7][1] = 252;
tableauHaute [8][1] = 266;
tableauHaute [9][1] = 281;
tableauHaute [10][1] = 294;
tableauHaute [0][2] = 87;
tableauHaute [1][2] = 106;
tableauHaute [2][2] = 119;
tableauHaute [3][2] = 129;
tableauHaute [4][2] = 139;
tableauHaute [5][2] = 155;
tableauHaute [6][2] = 167;
tableauHaute [7][2] = 178;
tableauHaute [8][2] = 188;
tableauHaute [9][2] = 198;
tableauHaute [10][2] = 208;

tableauBasse = new Array();
tableauBasse [0][0] = 116;
tableauBasse [1][0] = 142;
tableauBasse [2][0] = 159;
tableauBasse [3][0] = 169;
tableauBasse [4][0] = 179;
tableauBasse [5][0] = 207;
tableauBasse [6][0] = 222;
tableauBasse [7][0] = 237;
tableauBasse [8][0] = 250;
tableauBasse [9][0] = 264;
tableauBasse [10][0] = 277;
tableauBasse [0][1] = 98;
tableauBasse [1][1] = 120;
tableauBasse [2][1] = 135;
tableauBasse [3][1] = 145;
tableauBasse [4][1] = 155;
tableauBasse [5][1] = 176;
tableauBasse [6][1] = 189;
tableauBasse [7][1] = 202;
tableauBasse [8][1] = 213;
tableauBasse [9][1] = 225;
tableauBasse [10][1] = 235;
tableauBasse [0][2] = 70;
tableauBasse [1][2] = 85;
tableauBasse [2][2] = 95;
tableauBasse [3][2] = 105;
tableauBasse [4][2] = 115;
tableauBasse [5][2] = 124;
tableauBasse [6][2] = 133;
tableauBasse [7][2] = 142;
tableauBasse [8][2] = 150;
tableauBasse [9][2] = 158;
tableauBasse [10][2] = 166;

var abo1;

switch (typeAbo1)
{
case 0:
abo1 = 0;
break;
case 1:
case 3:
abo1 = 1;
break;
case 2:
abo1 = 2;
break;
}

switch (periode1)
{
case 0:
case 2:
case 4:
t1 = tableauHaute[nbre1][abo1];
break;
case 1:
case 3:
t1 = tableauBasse[nbre1][abo1];
break;
}

document.formulaire.prix1.value=t1;
</SCRIPT>

</body>
</html>
0
djoulch Messages postés 32 Statut Membre
 
Juste oublié deux chose dans le code

<FORM Name="formulaire" Method="post" Action="formulaire.php3">

</FORM>
0