Retourner à la page d'accueil de TJS

Les tableaux javascript

JavaScript a une gestion particulière des tableaux. Un tableau est un objet Array. (voir la page JavaScript, langage objet pour plus d'infos sur ce type de programmation)
Vous trouverez au sommaire de cette page :
1 - La déclaration de tableaux
2 - Les tableaux spéciaux
      Les tableaux à indices non numériques
      Les tableaux d'objets
      Les tableaux à plusieurs dimensions
3 - Les propriétés et les méthodes des tableaux
4 - Des exemples utiles

1 - La déclaration de tableaux

C'est quoi un tableau ?
Les tableaux sont des éléments indispensables de la programmation.
Passez au paragraphe suivant si vous connaissez déjà les tableaux en programmation.
Un tableau est une structure ordonnée permettant de recevoir des informations.
Les jours de la semaine peuvent être stockés en mémoire dans un tableau. Le tableau en mémoire peut être comparé au tableau réel:

Indice 1 2 3 4 5 6 7
Contenu Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche

L'intérêt premier du tableau est de permettre un accès à une information par son indice.
Par exemple, le premier élément de ce tableau contient "Lundi".
Le paragraphe suivant montre comment remplir un tableau.

Déclaration de base
Un tableau est un objet Array. Pour déclarer un tableau, il faut utiliser l'instruction new :
   var tab=new Array;
La variable tab a maintenant la structure d'un tableau. Elle possède les propriétés et les méthodes des tableaux et est prête à recevoir le contenu du tableau.

En javascript, comme dans la plupart des langages de programmation, le premier élément du tableau commence à l'indice 0. C'est un peu gênant, mais on s'habitue...
Pour alimenter le tableau avec les jours de la semaine, on écrit le code suivant :
   var tab=new Array;
   tab[0]="Lundi";
   tab[1]="Mardi";
   tab[2]="Mercredi";
   tab[3]="Jeudi";
   tab[4]="Vendredi";
   tab[5]="Samedi";
   tab[6]="Dimanche";
   var longueur=tab.length;

Maintenant, le tableau est initialisé avec les jours de la semaine.
La variable longueur contient 7 : il y a 7 élements dans le tableau de l'indice 0 à l'indice 6 (soit 7-1).
Voyez le formulaire pour obtenir le contenu du tableau à l'indice voulu.
Indice
Si on accède à un élément dont l'indice n'existe pas, javascript retourne undefined.
Par exemple, tab[10] n'existe pas, cet élément vaut undefined.

Déclaration accélérée
A partir des versions 4 des navigateurs, la déclaration du tableau des jours de la semaine peut se faire plus directement :
   var tab=new Array("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");

La fonction Array reçoit en paramètres les éléments ordonnés du tableau. Elle construit le tableau. Array est le constructeur de l'objet tableau.

Le tableau tab a exactement les mêmes propriétés dans les 2 types de création.


2 - Les tableaux spéciaux
Nous avons vu comment créer un tableau simple à une seule dimension. C'est la base de tous les tableaux possibles en javascript.

Changer les indices
Dans certains cas, un indice numérique est moins pratique ou moins explicite qu'un indice sous forme de texte.
Par exemple, imaginons que pour chaque jour de la semaine on ait une page spéciale à charger :
  - samedi et dimanche = weekend.html
  - mercredi = enfant.html
  - les autres jours = semaine.html

Il pourrait être intéressant d'avoir un tableau de ce type :

Indice Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
Contenu semaine semaine enfant semaine semaine weekend weekend

Qui serait déclaré ainsi en javascript :
   var tab=new Array;
   tab["Lundi"]="semaine";
   tab["Mardi"]="semaine";
   tab["Mercredi"]="enfant";
   tab["Jeudi"]="semaine";
   tab["Vendredi"]="semaine";
   tab["Samedi"]="weekend";
   tab["Dimanche"]="weekend";

Voyez le formulaire pour obtenir le contenu du tableau à l'indice voulu. (Attention à la majuscule)
Indice
Grâce à cette déclaration un peu spéciale, on accède aux éléments du tableau par le jour de la semaine.

Les tableaux d'objets
Pour l'instant, les tableaux que nous avons vus contenaient des valeurs basiques (chaînes de caractères ou nombres). Il est possible d'associer à un élément de tableau un objet javascript complexe.
Je vous invite à lire la page concernant le JavaScript objet si vous n'êtes pas familier avec la notion d'objet.

Imaginons un tableau contenant tous vos animaux domestiques.
Un animal domestique est décrit par :
  - son nom
  - son espèce
  - son âge
Voici la fonction qui construit un animal en mémoire :
   function Animal(un_nom,une_espece,un_age) {
      this.nom=un_nom;
      this.espece=une_espece;
      this.age=un_age;
   }

On peut créer les animaux en appelant la fonction Animal :
   var milou=new Animal("Milou","Chien","4")
   var titi=new Animal("Titi","Canari","1")
   var rominet=new Animal("Rominet","Chat","2")

On a maintenant en mémoire 3 variables correspondant à nos 3 animaux :
   milou, titi et rominet
ATTENTION : il ne faut pas confondre les variables en minuscules avec le nom de l'animal qui est une chaîne de caractères et qui comporte une majuscule !

Il ne reste qu'à créer le tableau animaux :
   var animaux=new Array;
   animaux[0]=milou;
   animaux[1]=titi;
   animaux[2]=rominet;

Ici, le premier élément du tableau animaux contient un objet, la variable milou. Il ne faut pas mettre de guillemet autour de milou : ce n'est pas une chaîne de caractères, mais un nom de variable.

Pour accéder à l'objet premier animal (indice 0), on écrit :
   animaux[0]
Pour accéder à ses propriétés, on utilise la notion pointée :
   animaux[0].nom
   animaux[0].espece
   animaux[0].age
Ce formulaire permet d'afficher les propriétés des animaux du tableaux
Indice Propriété

Les tableaux à plusieurs dimensions
On vient de voir qu'il est possible de créer des tableaux d'objets. Or un tableau est aussi un objet javascript Array.
Il est donc possible de créer des tableaux de tableaux, ce qui correspond à des tableaux à plusieurs dimensions.
Le nombre de dimensions d'un tableau n'est pas limité; mais nous allons traiter un exemple simple et concret à deux dimensions.

Imaginons un jeu de morpion. La zone de jeu est un plateau de 3 par 3. Supposons cette grille à un moment donné de la partie :

  X
XO 
OX 

012
0
1
2
Cette grille est bien un tableau à 2 dimensions.
Décidons, par convention, d'indicer d'abord la colonne puis la ligne.
Ainsi, la case[0,0] coin supérieur gauche est vide, la case [0,2] coin inférieur gauche contient "O", la case[2,0] coin supérieur droit contient "X".

Comment faire pour créer un tableau javascript de ce type.
On va créer un tableau de 3 colonnes ; une colonne étant un tableau de 3 cases.

D'abord on crée les 3 colonnes :
   var col0=new Array; col0[0]=" "; col0[1]="X"; col0[2]="O";
   var col1=new Array; col1[0]=" "; col1[1]="O"; col1[2]="X";
   var col2=new Array; col2[0]="X"; col2[1]=" "; col2[2]=" ";

Ensuite le tableau morpion :
   var morpion=new Array;
   morpion[0]=col0; morpion[1]=col1; morpion[2]=col2;

Pour accéder à l'élément [0,2], on écrit simplement :
   morpion[0][2]

Le premier indice entre crochets appelle la colonne, le second appelle la case de la colonne indicée.
Un petit formulaire pour tester le tableau morpion :
    morpion[] []
Une fois que le tableau est créé, il devient manipulable comme dans tout autre langage.
L'algorithme pour faire jouer la machine au morpion ne doit pas être sorcier à trouver (mais je me fixe comme objectif d'offrir toujours plus de scripts et de conseils, donc vous ne le trouverez pas tout de suite ici !).
JavaScript n'est pas adapté aux gros algorithmes, car c'est un langage interprété donc assez lent. Même s'il est envisageable de développer un script d'échecs ou de dames, les performances ne seraient pas à la hauteur du temps passé au développement.


3 - Les propriétés et les méthodes des tableaux
Au cours des évolutions des navigateurs et du JavaScript, les tableaux se sont enrichis de propriétés et de méthodes nouvelles.
Pour des raisons de compatibilité entre versions et entre navigateurs, ne sont détaillées dans ce paragraphe que les plus anciennes et les plus sûres.

Le nombre d'éléments
La propriété length retourne le nombre d'éléments d'un tableau.
Si length vaut 0, le tableau est vide.
Si length est supérieure à 0, le tableau possède des éléments de l'indice 0 à length-1

Le découpage en chaînes

La concaténation


4 - Des exemples utiles
Les tableaux sont utilisés dans la plupart des scripts du site. Voici quelques scripts simples qui montrent bien l'emploi des tableaux.
REMARQUE : En programmation, il n'y a jamais une solution unique à un besoin. Comme en philo, ces scripts sont des exemples didactiques et ne prétendent pas être les meilleurs.

Formatage de date
Le formatage de dates est un bon exemple d'utilisation des tableaux.
Le navigateur peut retourner le numéro du jour et du mois en cours. Avec ces indices, on peut aller rechercher le libellé en français du jour et du mois.
   var dt=new Date;
   var jour=dt.getDay();
   var nu=dt.getDate();
   var mois=dt.getMonth();
   var tabjr=new Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
   var tabmois=new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet", "Août","Septembre","Octobre","Novembre","Décembre");
   document.write("Nous sommes le "+tabjr[jour]+" "+nu+" "+mois);

Voici le résultat de ce script :
La méthode getDay() retourne le numéro du jour de la semaine, 0 pour le dimanche à 6 pour samedi.
La méthode getMonth() retourne le numéro du mois, 0 pour Janvier à 11 pour Décembre.
Ici, on affiche le jour et le mois correspondant aux indices retournés.

Tri de tableaux
Il existe déjà des fonctions javascript de tri de tableau. Mais selon les versions, la compatibilité n'est pas assurée. Voici un script qui fonctionne pour tous les tableaux sur tous les navigateurs.
Voir le script tri de tableau

Les scripts du site utilisant les tableaux
    Moteur de recherche objet

Nouveautés du moment sur le site

Maj tuto AJAX avec XMLHTTPRequest

Le tutorial sur la console Javascript

Le format JSON

Les instructions try ... catch

L'objet XMLHttpRequest

Chercher une référence

Le graph des objets Javascript



Chargement
en cours...

Le guide complet du javascript

Le Guide Complet du JavascriptEn savoir plus sur mon livre aux Editions Micro Application
Le 27/05/2017 00:48:35 sur php7 en 3.56 ms