Maison >interface Web >js tutoriel >Les tableaux JavaScript sont-ils vraiment denses ou présentent-ils un comportement clairsemé ?

Les tableaux JavaScript sont-ils vraiment denses ou présentent-ils un comportement clairsemé ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-13 10:32:02915parcourir

Are JavaScript Arrays Truly Dense, or Do They Exhibit Sparse Behavior?

Nature clairsemée des tableaux Javascript

En Javascript, les tableaux sont intrinsèquement clairsemés, ce qui signifie qu'ils n'attribuent pas automatiquement de mémoire pour tous les éléments entre 0 et l'indice actuel. Au lieu de cela, les éléments ne sont alloués que lorsqu'ils sont accédés ou attribués.

Par exemple, considérons le code suivant, où nous définissons un élément à l'heure actuelle comme index :

array[Date.getTime()] = value;

Contraire à ce à quoi on pourrait s'attendre, cela n'amène pas l'interprète à allouer tous les éléments de 0 au moment actuel. Au lieu de cela, il alloue uniquement l'élément spécifique auquel on accède.

Implémentation de la table de hachage

Les tableaux Javascript sont implémentés en interne sous forme de tables de hachage. Cela signifie que les clés (indices) peuvent non seulement être des entiers mais également des chaînes, des flottants ou des objets. Lors de leur insertion dans la table de hachage, toutes les clés sont converties en chaînes à l'aide de la méthode toString().

Code de vérification

Vous pouvez vérifier cette nature clairsemée avec le test suivant code :

var array = [];
array[0] = "zero";
array[new Date().getTime()] = "now";
array[3.14] = "pi";

for (var i in array) {
  console.log("array[" + i + "] = " + array[i] + ", typeof(" + i + ") == " + typeof(i));
}

Ce code parcourt les indices et sorties réellement définis :

array[0] = zero, typeof(0) == string
array[1254503972355] = now, typeof(1254503972355) == string
array[3.14] = pi, typeof(3.14) == string

ce qui démontre que les indices non entiers fonctionnent également sans allouer d'éléments intermédiaires. Cependant, notez que l'utilisation de la boucle for traditionnelle avec i allant de 0 à array.length peut entraîner des problèmes avec les index de tableau non standard.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn