La FAQ est en train de subir une grosse mise à jour en mode collaboratif.
J'ai ajouté ces questions:
C'est donc la proposition de Kaamo avec quelques détails supplémentaires, et introduisant les Map de ES6 (la FAQ est mise à jour pour ES6).Que sont les tableaux en JavaScript ?
Dans la plupart des langages de programmation, deux sortes de tableaux sont disponibles :
les tableaux indexés, souvent appelés listes, dont les index correspondent au rang de l'élément dans le tableau (il s'agit donc de valeurs numériques commençant à 0) ;
les tableaux associatifs, souvent appelés maps, dont les index correspondent à des identifiants uniques (comme des chaines de caractères par exemple).
En JavaScript, jusqu'à la norme EcmaScript 5, seuls les tableaux indexés étaient disponibles. Il s'agit de l'objet global Array. Cependant, tous les objets en JavaScript sont des collections de couples clé/valeur et peuvent se voir rajouter ou supprimer des propriétés dynamiquement (y compris les Array, qui sont aussi des objets). Tout objet a ainsi une structure similaire à un tableau associatif, mais il faut bien comprendre que les propriétés et méthodes spécifiques aux objets Array ne sont pas utilisables ici, en particulier la propriété length permettant d'obtenir la taille du tableau (le nombre d'entrées).
A partir de la norme EcmaScript 6, on dispose de vrais tableaux associatifs avec l'objet global Map. Les Maps présentent plusieurs avantages comparés aux simples objets : elles possèdent des méthodes et propriétés spécifiques aux tableaux associatifs (dont la propriété length), et leurs index peuvent être de n'importe quel type contrairement aux objets qui se contentent des chaînes de caractères.
Comment déclarer et initialiser un tableau indexé ?
Il y a deux façons de déclarer qui donnent le même résultat :
- l'écriture littérale (recommandée): var tableau_simple = ['premier', 'deuxième', 'troisième'];
- le constructeur: var tableau_simple = new Array('premier', 'deuxième', 'troisième');
tableau_simple contient tableau_simple.length (3) éléments allant de l'indice 0 à l'indice 2 : ['premier', 'deuxième', 'troisième'].
Lorsqu'un seul paramètre numérique est passé au constructeur Array, il s'agit de la taille du tableau (si elle est connue à l'avance). En connaissant la taille à l'avance, certains navigateurs améliorent ainsi les performances.
- var tableau_simple = new Array(3);
tableau_simple contient alors tableau_simple.length (3) trous (absence d'élément) allant de l'indice 0 à l'indice 2. Les trous sont souvent traités comme s'il s'agissait de la valeur undefined. Il y a toutefois quelques différences: les trous sont omis par la méthode forEach et éliminés par la méthode filter par exemple. Il ne vous reste plus qu'à remplir ces trous avec les valeurs désirées : tableau_simple[0] = 'premier';
Attention, pour accéder au 3ème élément, il faut lire l'indice 2 car la numérotation commence à 0.
tableau_simple[2]; // troisième élément
J'ai ici ajouté la nuance entre les valeurs undefined et les "trous" dans les arrays. Pour plus d'infos, cet article: http://www.2ality.com/2013/07/array-...ion-holes.html
D'autres suggestions ?
Partager