COURS JavaScript


Accueil | Éléments de base du langage JavaScript : Les tables indexées à une dimension (vecteurs)

Les Les tables indexées à une dimension (vecteurs) suite


Généralités

Vous comprendrez mieux cette leçon en ayant d'abord suivi la leçon précédente sur les tables. Vous vous souviendrez alors de notre exemple (repris ci-dessous) et qui représentait tout à fait arbitrairement (j'en conviens) l'image d'un meuble contenant des disques d'auteurs classiques.

Nom du meuble (ici du tableau) : MeubleClassique

0 1 2 3 4 5 6 7 8 9
Mozart Chopin Haendel Bach Lully Gounod Schubert Brahms Verdi Wagner

 


Autre manière de remplir un vecteur (table)

Nous avions vu comment remplir un vecteur (table), en faisant référence explicitement à chaque poste de la table, et en y mettant ce que nous avions envie d'y mettre. Cependant, il existe une autre manière de faire le même travail. Tout simplement en remplissant la table lors de sa déclaration. Il faut et il suffit pour celà, de spécifier chaque contenu de chaque poste de la table en séparant ces contenus par des virgules. Nous devrons alors écrire :

var MeubleClassique = new Array("Mozart", "Chopin", "Haendel", "Bach", "Lully", "Gounod", "Schubert", "Brahms", "Verdi", "Wagner")

Et le résultat sera exactement le même. Notre table est remplie et nous pouvons désormais accéder à chaque poste en y faisant explicitement référence.



Visualiser le contenu d'une table

Nous savons accéder au contenu d'un poste de la table (voir leçon précédente) mais il peut arriver que nous ayons envie de voir l'intégralité du contenu de TOUTE la table d'un seul coup sans avoir à taper les instruction qui nous donnent accès à chaque poste, indépendament les uns des autres. Ce qui peutêtre pratique pour vérifier que notre table est bien remplie comme nous le voulons.
Pour ce faire, nous allons utiliser une instruction particulière qui transforme la table (vecteur) en une chaîne de caractères unique formée du contenu de tous les postes de la table, et séparés par des virgules. Nous écrirons alors :

MeubleClassique.join();

Le résultat s'affiche alors comme suit :

Mozart,Chopin,Haendel,Haendel,Haendel,Bach,Lully,Gounod,Schubert,Brahms,Verdi,Wagner

sous forme d'une chaîne de caractères unique. Cette instruction sera très utile pour "debugger" un programme en en faisant une alert(); afin de visauliser le contenu d'une table à un moment particulier de l'éxécution d'un programme qui est destiné à remplir ou à gérer cette table. Pour voir le résultat que ça peut donner, cliquez sur le bouton ci-dessous.

Mais il y a beaucoup plus fort encore ... (hé oui, on n'arrête pas le progrès :-). L'instruction .join() permet de spécifier le caractère qui séparera les contenus de chaque postes de la table lors de l'affichage. Ici, sans rien spécifier de particulier, nous avons laissé le système utiliser la virgule "," comme caractère de séparation des postes de la table. Pour plus de clarté dans l'affichage, nous pouvons choisir de demander que le caractère de séparation des postes de la table soit un retour à la ligne dans la fonction alert(). Ce retour à la ligne s'écrit "\n" (antislash n). Nous écrirons donc, dans notre fonction alert(); :

alert ("Le contenu de la table MeubleClassique est : \n\n" + MeubleClassique.join("\n"));

Pour voir le résultat, cliquez sur le bouton ci-dessous :



Trier le contenu d'une table

Avoir une table brut de fonderie, telle quelle, sans pouvoir la trier, résuirait considérablement l'utilité que nous pourrions avoir de l'utilisation des tables. Fort heureusement, les concepteurs de JavaScript (dans leur grande lucidité) ont prévu le coup, et nous permettent de trier une table. Cette fonction, est une méthode de l'objet Array et s'écrit :

MeubleClassique.sort();

Attention : une fois triée, la table NE PEUT PLUS retrouver son aspect d'origine. Autrement dit, c'est IRRÉVERSIBLE... !!! Alors .... ne le faites qu'en toute connaissance de cause.

Pour mieux voir ce que celà donne, cliquez sur le bouton ci-dessous, qui affiche le résultat du tri de la table.

Désormais, le poste 0 de la table MeubleClassique, soit MeubleClassique[0] sera égal "Bach", MeubleClassique[1] sera égal "Brahms"etc...

Mais ceci est définitif, et la table ne pourra en aucun cas retrouver son aspect originel. Si vous voulez conserver une version non triée, il faut (avant de trier la table), la passer dans une variable qui conservera la table comme à son origine. Par exemple :

var MeubleClassiqueOriginal = MeubleClassique; // passage d'une table dans l'autre
MeubleClassique.sort(); // tri de la table MeubleClassique

Et à ce moment là, vous aurez deux tables, MeubleClassique qui sera triée, et MeubleClassiqueOriginal qui sera la même table, mais non triée. Vous pourrez en faire ce que vous voulez.

Notez qu'en passant une table (MeubleClassique) dans une variable (MeubleClassiqueOriginal), la variable de réception (MeubleClassiqueOriginal) devient automatiquement une table elle aussi, c'est à dire un objet de type Array. Comme la table déclarée (MeubleClassique) sans qu'on ait besoin de la déclarer comme telle.



Ce cours est enseigné par Philippe Médan 
dans le cadre de la formation des professionnels de l'INTERNET.
au CREFAC , 14 rue Scandicci, 93000 Pantin. Tél. : 01 48 46 51 99
au GITA-GRETA , Lycée Technologique Diderot 61, rue David D'Angers 75019 Paris Tél. : 01 40 40 36 27
au CESI à l'Ecole des ingénieurs, 116 Av Aristide Briand, BP 57, 92224 Bagneux CEDEX Tél. : 01 45 36 70 00
au CFA-AFIA Centre de Formation par l'Apprentissage spécialisé en Informatique DUT Licence MIAGE,
PUIO - Bâtiment 640 - Plateau du Moulon - 91405 Orsay Tél. : 01 69 15 35 19.

© Philippe Médan 1999-2007. Tous droits de reproduction réservés pour tous pays.