Tableaux javascript

Fermé
djoulch Messages postés 32 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 20 octobre 2003 - 21 avril 2003 à 12:50
djoulch Messages postés 32 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 20 octobre 2003 - 21 avril 2003 à 18:04
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 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 20 octobre 2003
21 avril 2003 à 13:00
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 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 210
21 avril 2003 à 15:45
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 5723 Date d'inscription lundi 8 octobre 2001 Statut Contributeur sécurité Dernière intervention 14 avril 2012 585
21 avril 2003 à 16:51
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 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 210
21 avril 2003 à 17:31
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 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 20 octobre 2003
21 avril 2003 à 17:42
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 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 20 octobre 2003
21 avril 2003 à 18:01
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 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 20 octobre 2003
21 avril 2003 à 18:04
Juste oublié deux chose dans le code

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


</FORM>
0

Discussions similaires