Tableaux clairsemés en JavaScript
Une idée fausse courante en JavaScript est l'hypothèse selon laquelle les tableaux sont contigus, ce qui signifie qu'ils contiennent tous les éléments de l'index 0 à leur longueur actuelle. Cependant, ce n'est pas le cas : les tableaux JavaScript sont clairsemés.
Lorsqu'un élément est accédé ou défini à l'aide d'un index supérieur à la longueur actuelle, un emplacement vide est créé et le tableau est étendu à la longueur appropriée. taille. Par exemple, si array[Date.getTime()] est utilisé pour définir une valeur, le tableau sera étendu pour contenir des emplacements vides de l'index 0 à l'heure actuelle, même si ces emplacements ne seront pas utilisés.
Implémentation de tables de hachage
Les tableaux clairsemés sont implémentés sous forme de tables de hachage en interne. Les clés, qui peuvent être des entiers, des chaînes, des flottants ou d'autres objets, sont converties en chaînes à l'aide de toString() avant d'être ajoutées au hachage. Cela permet un système d'indexation flexible.
Exemple de test
Pour confirmer la nature clairsemée des tableaux, considérez le code de test suivant :
var array = []; array[0] = "zero"; array[new Date().getTime()] = "now"; array[3.14] = "pi"; for (var i in array) { alert("array[" + i + "] = " + array[i] + ", typeof(" + i + ") == " + typeof(i)); }
Ce code affichera :
array[0] = zero, typeof(0) == string array[1254503972355] = now, typeof(1254503972355) == string array[3.14] = pi, typeof(3.14) == string
La syntaxe for...in parcourt les indices définis, démontrant que le tableau est étendu avec des emplacements vides lors de l'accès ou de la définition d'éléments avec des indices non séquentiels.
Différences de navigateur
Différents navigateurs gèrent les tableaux clairsemés de la même manière, avec des tableaux implémentés sous forme de hachage tableaux. Cependant, il est important d'envisager l'utilisation de tableaux clairsemés lorsque vous traitez des index très volumineux, car cela peut avoir un impact sur la consommation de mémoire et les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!