Visit Mozilla.org

Référence de JavaScript 1.5 Core:Objets globaux:Array

Un article de MDC.


Sommaire

[modifier] Résumé

Objet Core

Permet de travailler avec des tableaux.

Voir également:

[modifier] Création

Avec le constructeur d'objets Array :

new Array(longueurDuTableau)
new Array(élément0, élément1, ..., élémentN)

Avec un tableau sous forme littérale :

[élément0, élément1, ..., élémentN]

[modifier] Paramètres

longueurDuTableau 
la longueur initiale du tableau. On peut y accéder à l'aide de la propriété length. Si la valeur spécifiée n'est pas un nombre, un tableau de longueur 1 est créé, dont le premier élément a la valeur spécifiée. La longueur maximale permise pour un tableau est 4 294 967 295.
élémentN 
une liste de valeurs pour les éléments du tableau. Lorsqu'il est déclaré sous cette forme, un tableau est initialisé avec les valeurs spécifiées de ces éléments, et sa propriété length est définie par le nombre de ces valeurs.

[modifier] Description

Un tableau est un ensemble ordonné de valeurs associé à un seul nom de variable. Notez qu'il ne faut pas l'utiliser comme un tableau associatif (en), utilisez plutôt Object pour cela.

L'exemple suivant crée un objet Array depuis sa forme littérale. Le tableau boissons contient trois éléments et a une longueur de 3 :

boissons = ["Café", "Thé", "Chocolat"];

Un tableau dense, de deux éléments ou plus, commençant à l'indice 0, peut être construit en définissant des valeurs initiales pour tous les éléments. Un tableau dense est un tableau dont chaque élément a une valeur. La ligne suivante crée un tableau dense de trois éléments :

monTableau = new Array("Hello", maVariable, 3.14159);

[modifier] Indices dans un tableau

Les éléments d'un tableau sont indexés par leur numéro d'ordre. Par exemple, supposons que le tableau suivant soit défini :

monTableau = new Array("Vent", "Pluie", "Feu");

Il est ensuite possible de faire référence aux éléments de la manière suivante :

  • monTableau[0] est le premier élément
  • monTableau[1] est le second élément
  • monTableau[2] est le troisième élément

[modifier] Spécification d'un seul paramètre

Lorsqu'un seul paramètre numérique est spécifié pour le constructeur Array, il s'agit de la longueur initiale du tableau. Le code suivant crée un tableau de cinq éléments :

modeDePaiement = new Array(5);

Le comportement du constructeur Array dépend de la nature du paramètre unique.

  • Si la valeur spécifiée est un nombre, le constructeur le convertit en un entier positif sur 32 bits et génère un tableau dont la propriété length (taille du tableau) est ce nombre entier. Le tableau ne contient au départ aucun élément, même s'il a une longueur non nulle.
  • Si la valeur spécifiée n'est pas un nombre, un tableau de longueur 1 est créé, dont le premier élément a la valeur spécifiée.

Le code suivant crée un tableau de longueur 25, et assigne ensuite des valeurs aux trois premiers éléments :

typesDeMusique = new Array(25);
typesDeMusique[0] = "R&B";
typesDeMusique[1] = "Blues";
typesDeMusique[2] = "Jazz";

[modifier] Augmentation indirecte de la taille d'un tableau

La longueur d'un tableau augmente si une valeur est assignée à un élément d'indice plus élevé que la longueur actuelle du tableau. Le code qui suit crée un tableau de longueur zéro, puis assigne une valeur à l'élément 99. La longueur du tableau sera alors 100.

couleurs = new Array();
couleurs[99] = "bleu de minuit";

[modifier] Création d'un tableau à l'aide du résultat d'une expression rationnelle

Le résultat d'une correspondance entre une expression rationnelle et une chaîne peut produire un tableau. Ce tableau dispose de propriétés et d'éléments fournissant des informations sur la correspondance trouvée. Les méthodes RegExp.exec, String.match et String.replace renvoient des tableaux. Pour mieux comprendre ces propriétés et éléments, examinons l'exemple ci-dessous en se référant au tableau qui suit :

// Trouve un d, suivi d'un ou plusieurs b, suivis d'un d
// Retient la série de b et le d qui suit
// Ignore la casse

expr = /d(b+)(d)/i;
monTableau = expr.exec("cdbBdbsbz");

Les propriétés et éléments renvoyés par cette instruction sont les suivantes :

Propriété/Élément Description Exemple
input Une propriété en lecture seule qui reflète la chaîne originale sur laquelle l'expression rationnelle a été exécutée. cdbBdbsbz
index Une propriété en lecture seule qui est l'indice (à partir de zéro) de la correspondance trouvée dans la chaîne. 1
[0] Un élément en lecture seule indiquant les derniers caractères trouvés. dbBd
[1], ...[n] Éléments en lecture seule reprenant les correspondances des sous-chaînes entre parenthèses, si l'expression rationnelle en contient. Le nombre de sous-chaînes possibles est illimité. [1]: bB
[2]: d

[modifier] Propriétés

constructor 
Spécifie la fonction créant le prototype d'un objet.
index 
Pour un tableau créé par une correspondance d'expression rationnelle, l'indice (à partir de zéro) de la correspondance dans la chaîne.
input 
Pour un tableau créé par une correspondance d'expression rationnelle, reflète la chaîne originale sur laquelle l'expression rationnelle a été évaluée.
length 
Indique le nombre d'éléments dans un tableau.
prototype 
Permet d'ajouter des propriétés à tous les objets de ce type.

[modifier] Méthodes

[modifier] Méthodes de modification

Ces méthodes modifient le tableau :

pop 
Retire le dernier élément d'un tableau et renvoie cet élément.
push 
Ajoute un ou plusieurs éléments à la fin du tableau et renvoie la nouvelle longueur de celui-ci.
reverse 
Inverse l'ordre des éléments d'un tableau, le dernier devient le premier et le premier devient le dernier.
shift 
Retire le premier élément d'un tableau et renvoie cet élément.
sort 
Trie les éléments d'un tableau.
splice 
Ajoute et/ou retire des éléments d'un tableau.
unshift 
Ajoute un ou plusieurs éléments au début d'un tableau et renvoie la nouvelle longueur de celui-ci.

[modifier] Méthodes d'accès

Ces méthodes ne modifient pas le tableau et en renvoient une certaine représentation.

concat 
Renvoie un nouveau tableau constitué de ce tableau joint avec d'autres tableaux et/ou valeurs.
join 
Concatène tous les éléments du tableau dans une chaîne.
slice 
Extrait une section d'un tableau et la renvoie dans un nouveau tableau.
toSource 
Renvoie une définition littérale représentant le tableau. Cette valeur peut être utilisée pour créer un nouveau tableau. Remplace la méthode Object.toSource.
toString 
Renvoie une chaîne représentant le tableau et ses éléments. Remplace la méthode Object.toString.
valueOf 
Renvoie la valeur primitive du tableau. Remplace la méthode Object.valueOf.
Les méthodes suivantes ont été indroduites dans JavaScript 1.6. Voir Nouveautés dans JavaScript 1.6 pour plus d'informations.
indexOf 
Renvoie la position (indexée à partir de 0) du premier élément au sein du tableau égal à la valeur spécifiée, ou -1 si la valeur n'a pas été trouvée.
lastIndexOf 
Renvoie la position (indexée à partir de 0) du dernier élément égal à la valeur spécifiée au sein du tableau, ou -1 si la valeur n'a pas été trouvée.

[modifier] Méthodes itératives

Ces méthodes ont été indroduites dans JavaScript 1.6. Voir Nouveautés dans JavaScript 1.6 pour plus d'informations.

Un certain nombre de méthodes reçoivent des fonctions en paramètres, qui seront rappelées au cours du traitement des éléments du tableau. Lorsque ces méthodes sont appelées, la propriété length du tableau est mémorisée et tout élément ajouté au delà de cette taille depuis le rappel ne sera pas traité. D'autres changements dans le tableau (une modification de valeur ou la suppression d'un élément) peuvent affecter les résultats de l'opération si la méthode traite l'élément modifié après. Le comportement spécifique de ces méthodes dans de tels cas n'est pas toujours bien défini, et il vaut mieux ne pas se baser dessus.

filter 
Crée un nouveau tableau comprenant tous les éléments du tableau pour lesquels la fonction de filtre renvoie true.
forEach 
Appelle une fonction pour chaque élément du tableau.
every 
Renvoie true si chaque élément du tableau satisfait à la fonction de test fournie.
map 
Crée un nouveau tableau contenant les résultats de l'appel de la fonction fournie sur chaque élément du tableau.
some 
Renvoie true si au moins un élément du tableau satisfait à la fonction de test fournie.
Les méthodes qui suivent ont été ajoutées dans JavaScript 1.8. Consultez Nouveautés dans JavaScript 1.8 pour plus d'informations.
reduce 
Applique une fonction simultanément sur deux valeurs du tableau (de gauche à droite) afin de réduire celui-ci à une seule valeur.
reduceRight 
Applique une fonction simultanément sur deux valeurs du tableau (de droite à gauche) afin de réduire celui-ci à une seule valeur.

[modifier] Méthodes génériques

De nombreuses méthodes de l'objet JavaScript Array sont conçues pour être appliquées de manière générale sur tous les objets qui « ressemblent » à des tableaux. C'est-à-dire qu'elles peuvent être utilisées sur tout objet disposant d'une propriété length, et auquel on peut accéder de manière utile à l'aide de noms de propriétés numériques (de manière similaire à l'indexation tableau[5]).

À faire : fournir des exemples avec Array.prototype.forEach.call, et l'ajout de la méthode à un objet comme JavaArray ou String.

Certaines méthodes, comme join, lisent uniquement la propriété length et les propriétés numériques de l'objet sur lequel elles sont appelées. D'autres, comme reverse, ont besoin que les propriétés numériques et length soient modifiables ; ces méthodes ne peuvent donc pas être appelées sur des objets comme String, qui ne permettent pas la modification de leur propriété length ou d'autres propriétés numériques calculées.

Les méthodes fonctionnant sur n'importe quel objet semblable à un tableau et qui n'ont pas besoin de modifier length ou des propriétés numériques sont :

Les méthodes qui modifient length ou des propriétés numériques de l'objet sur lequel elles sont appelés sont :

Cet exemple montre comment utiliser map sur un objet String pour obtenir un tableau d'octets dans l'encodage ASCII représentant les valeurs des caractères :

var a = Array.prototype.map.call("Hello World", 
                                 function(x) { return x.charCodeAt(0); })
// a vaut à présent [72,101,108,108,111,32,87,111,114,108,100]

[modifier] Exemples

[modifier] Exemple : création d'un tableau

L'exemple suivant crée un tableau, messages, d'une longueur de 0, puis assigne des valeurs à messages[0] et messages[99], ce qui changera la longueur du tableau en 100.

var messages = new Array();
messages[0] = "Hello";
messages[99] = "world";
// La condition suivante est vraie
// car l'élément messages[99] est défini.
if (messages.length == 100)
   maVariable = "La longueur vaut 100.";

[modifier] Exemple : création d'un tableau bidimensionnel

Le code suivant crée un tableau à deux dimensions et assigne le résultat à maVariable.

var maVariable = "Test de tableau multidimensionnel ; ";
var nb = 4;
var a = new Array(nb);
for (var i = 0; i < nb; i++) {
   a[i] = new Array(nb);
   for (var j = 0; j < nb; j++) {
      a[i][j] = "[" + i + "," + j + "]";
   }
}
for (var i = 0; i < nb; i++) {
   var str = "Ligne " + i + " : ";
   for (var j = 0; j < nb; j++) {
      str += a[i][j];
   }
   maVariable += str + "; ";
}

La chaîne suivante est assignée à maVariable (des retours à la ligne sont utilisés ici pour la lisibilité) :

Test de tableau multidimensionnel;
Ligne 0 : [0,0][0,1][0,2][0,3];
Ligne 1 : [1,0][1,1][1,2][1,3];
Ligne 2 : [2,0][2,1][2,2][2,3];
Ligne 3 : [3,0][3,1][3,2][3,3];

Faites également l'expérience avec nb = 8 et regardez le tableau grandir.