Commençons notre petite visite guidée par un objet qui vous est déjà un tant soit peu familier : Array, pour les tableaux. Il possède plusieurs méthodes que nous ne vous avons pas encore présentées, mais qui vous serviront certainement un jour ou l'autre.
Ce chapitre va vous expliquer le rôle des différents attributs et méthodes des tableaux.
Sa structure (ainsi que celle des prochains) est la suivante :
un sommaire, récapitulant les attributs et méthodes traités dans le chapitre, avec une brève description.
des sous-parties regroupant des explications et des exemples pour chacun des attributs / méthodes, classés par thèmes.
Pas de question ?
Alors, allons-y. :)
Sommaire
Les classiques
length
join(separateur) : retourne le contenu sous forme de chaîne de caractères
sort() : trie le tableau.
Moins classiques
concat(t) : concatène avec le tableau t
reverse() : inverse l'ordre des éléments
slice(debut, fin) : extrait une partie du tableau.
Les piles et les files
pop() : retire et renvoie le dernier élément du tableau
push(x) : ajoute l'élément x à la fin du tableau
shift() : retire et renvoie le premier élément du tableau
unshift(x) : ajoute l'élément x au début du tableau.
Les classiques
length
Description
Cet attribut contient la longueur du tableau.
Exemple
var t = new Array("toto", "bob");
alert(t.length);
t[4] = "homer";
alert(t.length);
Ce qui affichera 2, puis 5.
En effet, dans le second cas, le tableau contiendra : "toto", "bob", [rien], [rien], "homer". Le dernier élément est donc le cinquième.
sort()
Description
Trie le tableau par ordre croissant (par ordre alphabétique pour des chaînes de caractères).
Ne renvoie rien : c'est le tableau avec lequel on appelle cette méthode qui est modifié.
Exemple
var t = new Array("toto", "bob", "homer");
t.sort();
Au final, le tableau contient, dans cet ordre : "bob", "homer", "toto".
join(separateur)
Description
Renvoie tous les éléments du tableaux séparés par séparateur, sous forme de chaîne de caractères. Si aucun séparateur n'est précisé, c'est la virgule qui est utilisée.
Utile lorsqu'on teste un script.
Exemple
var t = new Array();
for(var i=0; i<9; i++)
t[i] = i+1;
alert(t.join('-'));
Ceci affichera 1-2-3-4-5-6-7-8-9.
Moins classiques
concat(t)
Description
Renvoie un tableau contenant les éléments du tableau, à la fin desquels sont ajoutés les éléments du tableau t.
Il est possible de mettre plusieurs arguments : monTableau.concat(t1, t2, t3, t4).
Exemple
var t1 = new Array(1,3,5);
var t2 = new Array(2, 4);
var t = t1.concat(t2);
t contient 1,3,5,2,4.
reverse()
Description
Inverse l'ordre des éléments (le tableau d'origine est modifié).
Exemple
var t = new Array();
for(var i=0; i<10; i++)
t[i] = i;
t.reverse();
t.reverse();
Au début (juste après la boucle), t contient 0,1,2,3,4,5,6,7,8,9.
Au milieu (entre les deux reverse), il contient 9,8,7,6,5,4,3,2,1,0.
À la fin, il contient à nouveau 0,1,2,3,4,5,6,7,8,9.
slice(debut, fin)
Description
t.slice(debut, fin) retourne le tableau composé des éléments de t entre debut (inclus) et fin (exclus).
Si les valeurs sont négatives, les éléments sont comptés à partir de la fin.
Il est possible d'appeler t.slice(debut) (sans indiquer la fin), auquel cas le tableau retourné contient tous les éléments à partir de debut, et jusqu'à la fin du tableau.
Le tableau d'origine n'est pas modifié.
Exemple
var t = new Array();
for(var i=0; i<10; i++)
t[i] = i;
// contient 0,1,2,3,4,5,6,7,8,9
var t1 = t.slice(2);
// contient 2,3,4,5,6,7,8,9
var t2 = t.slice(2,8);
// contient 2,3,4,5,6,7
var t3 = t.slice(-6, -2);
// contient 4,5,6,7
var t4 = t.slice(2,-2);
// contient 2,3,4,5,6,7
// t contient toujours 0,1,2,3,4,5,6,7,8,9
Les piles et les files
Ces fonctions ressemblent à celles utilisées avec les piles ou les files (c'est un sujet qui sera abordé en TD, rassurez-vous :diable: ).
pop()
Description
Retire le dernier élément du tableau, et renvoie sa valeur.
Exemple
var t = new Array(2,4,6,8);
alert(t.pop());
Ce code affichera 8.
À la fin, t contient 2,4,6.
push(x)
Description
Ajoute l'élément x à la fin du tableau (en quelque sorte le contraire de pop()).
Remarque
Accepte un nombre quelconque de paramètres : ils sont tous ajoutés à la fin du tableau.
Dans les dernières version de JS, c'est la nouvelle taille du tableau qui est renvoyée (il n'est cependant pas d'usage de récupérer la taille d'un tableau lorsqu'on travaille avec cette fonction).
Exemple
var t = new Array(2,4,6);
t.push(8);
À la fin, t contient 2,4,6,8.
shift()
Description
Retire le premier élément du tableau, et renvoie sa valeur.
Les autres éléments sont décalés vers le haut pour "combler le trou".
Remarque
Le décalage des éléments prend du temps lorsque le tableau est long : cette fonction n'est donc pas bien adaptée pour utiliser un tableau comme une pile ou une file.
Exemple
var t = new Array(2,4,6,8);
alert(t.shift());
Ce code affichera 2.
À la fin, t contient 4,6,8.
unshift(x)
Description
Ajoute l'élément x au début du tableau (en quelque sorte le contraire de shift()).
Les éléments sont décalés vers le bas.
Remarque
Accepte un nombre quelconque de paramètres : ils sont tous ajoutés au début du tableau.
La nouvelle taille du tableau est renvoyée (il n'est cependant pas d'usage de récupérer la taille d'un tableau lorsqu'on travaille avec cette fonction).
Le décalage des éléments prend du temps lorsque le tableau est long : cette fonction n'est donc pas bien adaptée pour utiliser un tableau comme une pile ou une file.
Exemple
var t = new Array(2,4,6);
t.unshift(0);
À la fin, t contient 0,2,4,6.
Piles et files ?
En conclusion de cette sous-partie : l'utilisation des tableaux comme files est déconseillée (elle nécessite d'utiliser shift ou unshift, qui ne sont pas des fonctions très adaptées).
Cependant, une utilisation comme pile est tout à fait possible, grâce à t.push(x) pour empiler, t.pop() pour dépiler, et la condition t.length == 0 pour savoir si la pile est vide ou non.
... c'est fini. ;)
(admirez un peu cette conclusion...)