Tableau associatif en JavaScript
Les tableaux associatifs sont des objets dynamiques que l'utilisateur redéfinit selon ses besoins. Quand on assigne des valeurs à des clés dans une variable de type Array, le tableau se transforme en objet, et il perd les attributs et méthodes de Array. L'attribut length n'est plus disponible car la variable n'a plus le type Array.
Nous allons faire la démonstration de tout cela et aussi montrer comment ajouter une méthode essentielle à un objet pour avoir le nombre d'éléments contenus quand il devient un tableau associatif.
Un tableau associatif est déclaré ou créé dynamiquement
On peut le créer en assignant un littéral à une variable.
var x = { "un" : 1, "deux" : 2, "trois": 3 };
On a en fait implicitement créé une variable de type Object.
On peut explicitement créer un objet et lui assigner des clés et des valeurs:
var o = new Object();
o["un"] = 1;
o["deux"] = 2;
o["trois"] = 3;
Le propre des objets en JavaScript est que les attributs sont aussi des clés comme on va le vérifier dans la démonstration.
Ainsi, le même tableau peut être créé plus simplement:
var oa = new Object();
oa.un = 1;
oa.deux = 2;
oa.trois = 3;
On accéde au contenu par les clés
Quelle que soit la méthode de création utilisée, on accède au contenu soit par les clés.
var y = o["un"];
Pour obtenir le contenu, élément par élément, on utilise une boucle for::
for(var i in arr)
{
document.writeln(i + "=" + arr[i]);
}
Les clés sont assignées à la variable i, laquelle permet d'obtenir la valeur correspondante.
Pour connaître le nombre d'éléments, il faut créer une fonction
Puisque nous ne disposons plus de l'attribut length de l'objet Array, il reste à ajouter une méthode à Object qui retourne la taille de la liste:
Object.size = function(arr)
{
var size = 0;
for (var key in arr)
{
if (arr.hasOwnProperty(key)) size++;
}
return size;
};
On obtient le nombre d'élément ainsi:
var s = Object.size(x);
On peut aussi définir une simple fonction qui prend l'objet en argument:
function size(arr)
{
var size = 0;
for (var key in arr)
{
if (arr.hasOwnProperty(key)) size++;
}
return size;
};
On obtient le nombre d'élément ainsi:
var s = size(x);
Démonstrations de tableaux associatifs
Création de tableaux associatifs selon différentes méthodes et accès aux éléments.
Créer un tableau associatif avec un littéral
var x = { "un" : 1, "deux" : 2, "trois": 3 };
for(var i in x)
{
document.writeln(i + "=" + x[i]);
}
un=1 deux=2 trois=3
Créer le tableau avec un objet
var o = new Object();
o["un"] = 1;
o["deux"] = 2;
o["trois"] = 3;
for(var i in o)
{
document.writeln(i + "=" + o[i]);
}
un=1 deux=2 trois=3
Les attributs d'un objet JavaScript sont aussi des clés
var oa = new Object();
oa.un = 1;
oa.deux = 2;
oa.trois = 3;
for(var i in oa)
{
document.writeln(i + "=" + x[i]);
}
un=1 deux=2 trois=3
L'attribut length n'a aucune valeur.
x.length: undefined
x instanceOf Array: false
Maintenant on ajoute une méthode size comme ci-dessus:
Object.size(x): 3
Ou une simple fonction:
size(x): 3 |